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

时间:2014-12-17 13:39:34

标签: javascript gulp

我希望能够在watch中将gulp任务添加到js中的所有frontend/js文件和以下任何其他js文件中

 gulp.watch('./frontend/js/**/*.js', ['browserify']);

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

3 个答案:

答案 0 :(得分:34)

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

  

**如果是" globstar"单独在路径部分,然后它匹配零个或多个目录和子目录搜索匹配。它不会抓取符号链接的目录。

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

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

的符号链接

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

答案 1 :(得分:6)

我刚做了一些测试 - 这实际上对我来说很合适。

我目前有以下结构 -

--apps
  --scripts
  ----test.js
  ----test-folder
  ------test2.js
  ------test-folder-deep
  --------test3.js
  --myApp
  ----scripts-symlinked (symlinked to apps/scripts)
  ----gulpfile.js

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

ln -s /Users/kandrews/apps/scripts ./scripts-symlinked

在我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']);
});

完美无缺。我也在子目录中尝试了这个('scripts / symlinked-scripts')并且也是成功的。

答案 2 :(得分:0)

我认为不值得努力:

gulp.watch('./frontend/js/', ['browserify']);