Gulp - 定位文件夹及其子文件夹中的所有文件

Jam*_*ber 28 javascript gulp

我希望能够增加watch在任务gulp到所有的js中的文件frontend/js和低于任何其他js文件

 gulp.watch('./frontend/js/**/*.js', ['browserify']);
Run Code Online (Sandbox Code Playgroud)

这只会将js文件定位到一个文件夹深处

JMM*_*JMM 37

它应该匹配任意数量的子目录:

**如果"globstar"在路径部分中是唯一的,则它匹配零个或多个目录以及搜索匹配的子目录.它不会抓取符号链接的目录.

https://github.com/isaacs/node-glob

那里有符号链接的目录吗?

符号链接

我不认为你会习惯于遍历你的符号链接目录.我建议您查看node.js fs.readdir递归目录搜索,看看是否有任何解决方案可以应用于您的用例.问题或答案中没有任何内容专门针对符号链接,因此我不知道是否有适合您的解决方案.如果您可以使用其中一个解决方案获取一系列解除引用的路径名,那么您只需将数组传递给gulp.src().

  • 事实上我确实有smylinks.好老秀 (2认同)

Kel*_*ews 6

我刚做了一些测试 - 这实际上对我来说很好.

我目前有以下结构 -

--apps
  --scripts
  ----test.js
  ----test-folder
  ------test2.js
  ------test-folder-deep
  --------test3.js
  --myApp
  ----scripts-symlinked (symlinked to apps/scripts)
  ----gulpfile.js
Run Code Online (Sandbox Code Playgroud)

我使用以下命令设置我的symlink文件夹(在Mac上 - 来自'myApp'文件夹)

ln -s /Users/kandrews/apps/scripts ./scripts-symlinked
Run Code Online (Sandbox Code Playgroud)

在我,gulpfile.js我有以下内容:

var gulp = require('gulp'),
    jshint = require('gulp-jshint');

gulp.task('jshint', function () {
    gulp.src('./scripts-symlinked/**/*.js')
        .pipe(jshint())
        .pipe(jshint.reporter('default'));
});

gulp.task('watch', function () {
    gulp.watch('./scripts-symlinked/**/*.js', ['jshint']);
});
Run Code Online (Sandbox Code Playgroud)

完美的工作.我也在子目录中尝试过这个('scripts/symlinked-scripts')并且也是成功的.