我们的gulp构建需要使用bower安装一堆库,然后将它们与我们分布在多个目录中的所有代码连接起来.这是它的样子:
var jsFiles = [
sourcePath + '/config/config.js',
sourcePath + '/vendor/jquery/dist/jquery.js',
sourcePath + '/vendor/js-cookie/src/js.cookie.js',
sourcePath + '/vendor/modernizr/modernizr.js',
sourcePath + '/vendor/lodash/lodash.js',
sourcePath + '/vendor/picturefill/dist/picturefill.min.js',
sourcePath + '/templates/**/*.js',
sourcePath + '/pages/**/*.js'
],
gulp.task('build:js', ['jscs'], function() {
return gulp.src(jsFiles)
.pipe(concat('scripts.js'))
.pipe(gulpif(isProd, uglify()))
.pipe(gulp.dest(outputPath + '/webresources/js'));
});
Run Code Online (Sandbox Code Playgroud)
我们的问题是,每当有人添加新库时,如果其他开发人员没有运行bower install以获取新组件,则会遇到问题.该scripts.js地没有他们建,因为它不会介意的水珠之一返回空,即使它是一个命名的文件.
该如何解决?如果glob返回零结果,有没有办法抛出错误?
任何人都可以建议如何使用该glob.sync方法添加多个文件扩展名.
就像是:
const glob = require('glob');
let files = glob.sync(path + '**/*.(html|xhtml)');
Run Code Online (Sandbox Code Playgroud)
谢谢 :)
肯定有这样一个简单的答案,我找不到之前曾问过的人:
什么通配模式包含文件夹中的所有文件但忽略所有子文件夹?
gulp.src('*')包含所有文件和文件夹.我只想要文件而不必单独排除文件夹.
在 Gulp 中,我有一个想要验证的 glob 模式。例如:
gulp.task('clean-requirejs', function() {
return gulp.src([
'./public/res-min/**/*.js'
])
.pipe(clean());
});
Run Code Online (Sandbox Code Playgroud)
我想看看 glob['./public/res-min/**/*.js']是如何扩展的。如何打印本示例中生成的参数/文件列表gulp.src?
更新:事实证明有一个非常简单的方法gulp-print可以解决这个问题,如下所示:
var print = require('gulp-print').default;
[....]
.pipe(print());
Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的项目
ls foo/
- file0.js
- a/file1.js
- b/file2.js
- c/file3.js
- d/file4.js
Run Code Online (Sandbox Code Playgroud)
如何编写glob 模式以排除 c & d 文件夹但获取所有其他 javascript 文件?我在这里查看了一个示例,但无法进行任何操作。
我想解决方案看起来与此类似:
glob('+(**/*.js|!(c|d))', function(err, file) {
return console.log(f);
});
Run Code Online (Sandbox Code Playgroud)
我想回来
- file0.js
- a/file1.js
- b/file2.js
Run Code Online (Sandbox Code Playgroud)