Должен ли я всегда заменять обратную косую черту прямой косой чертой в путях кросс-платформенной разработки на Node.js?
Однажды мой наблюдатель за чокидаром gulp.watch()
) перестает работать. После экспериментов и отладки я обнаружил, что причиной является двойная обратная косая черта в глобусах:
gulp.watch([
'C:\\Users\\i\\projects\\test\\1_Source\\0_Development\\1_Markup/**/*.+(pug)',
'C:\\Users\\i\\projects\\test\\1_Source\\1_Open\\1_Markup/**/*.+(pug)'
])
(Конечно, я не пишу абсолютные пути в вышеприведенных глобусах вручную - я создаю их программно.)
У меня почти нет опыта работы с операционными системами на основе UNIX, но я хочу, чтобы мой код работал кроссплатформенно. Если приведенный ниже код работает на каждой из Windows, Linux и Mac OS, я полагаю, что мне всегда следует преобразовывать обратные слэши в прямые косые черты в моих программах Node.js - это наиболее безопасный способ. Правильно ли мое предположение?
gulp.watch([
'C:/Users/i/projects/test/1_Source/0_Development/1_Markup/**/*.+(pug)',
'C:/Users/i/projects/test/1_Source/1_Open/1_Markup/**/*.+(pug)'
])
Также я узнал, что такие решения, как path.normalize()
не всегда дает желаемый результат. Является .replace(/\\/g, '/')
есть только безопасный способ гарантировать прямую косую черту только в дорожках?
Обновление: новые результаты эксперимента
Ни одна из нижеприведенных работ не работает:
// --- 1
gulp.watch([
'C:\\Users\\i\\projects\\test\\1_Source\\0_Development\\1_Markup\\**\\*.+(pug)',
'C:\\Users\\i\\projects\\test\\1_Source\\1_Open\\1_Markup\\**\\*.+(pug)'
])
// --- 2
gulp.watch([
path.normalize('C:\\Users\\i\\projects\\test\\1_Source\\0_Development\\1_Markup\\**\\*.+(pug)'),
path.normalize('C:\\Users\\i\\projects\\test\\1_Source\\1_Open\\1_Markup\\**\\*.+(pug)')
])
// --- 3
gulp.watch([
'C:\\Users\\i\\projects\\test\\1_Source\\0_Development\\1_Markup/**/*.+(pug)',
'C:\\Users\\i\\projects\\test\\1_Source\\1_Open\\1_Markup/**/*.+(pug)'
])
// --- 4
gulp.watch([
path.normalize('C:\\Users\\i\\projects\\test\\1_Source\\0_Development\\1_Markup/**/*.+(pug)'),
path.normalize('C:\\Users\\i\\projects\\test\\1_Source\\1_Open\\1_Markup/**/*.+(pug)')
])
Но
gulp.watch([
'C:/Users/i/projects/test/1_Source/0_Development/1_Markup/**/*.+(pug)',
'C:/Users/i/projects/test/1_Source/1_Open/1_Markup/**/*.+(pug)'
])
работает.