曾经,我的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)'
])
(当然,我不会手动在上面的 glob 中编写绝对路径 - 我是通过编程方式生成的。)
我几乎没有使用基于 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)'
])
作品。