0

曾经,我的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)'
])

作品。

4

0 回答 0