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)'
])

(もちろん、上記のグロブに手動で絶対パスを記述することはありません。プログラムで生成します。)

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