Однажды мой chokidar наблюдатель (обернутый в 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)'
])
работает.