这是我的代码:
'use strict';
var gulp = require('gulp'),
$ = require('gulp-load-plugins')(),
module.exports = function(options) {
gulp.task('test', function () {
gulp.src('external/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
.pipe(gulp.dest('dist/'));
});
};
此字符串gulp.dest(' dest /')将文件_bootstrap.scss保存在' dest /'文件夹中。
如果我更改字符串
gulp.src('external/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
到字符串
gulp.src('external/*/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
然后是字符串
gulp.dest('dest/')
将文件_bootstrap.scss保存在dest / bower_components / bootstrap-sass-official / assets / stylesheets文件夹中。
你能解释并给我链接在哪里阅读有关为什么在第一种情况下我们在dest文件夹中没有很多文件夹,而在第二种情况下,dest文件夹中有很多文件夹?
如果我理解正确,在第二种情况下,glob模式将转换为完整文件路径数组。这意味着在我的示例中,glob nodejs模块将转换glob模式' external / * / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss'至 array [' external / bower_components / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss']。那么为什么我的内部有很多嵌套文件夹' dest /'第二种情况下的文件夹,但内部没有嵌套文件夹' dest /'第一种情况下的文件夹?
答案 0 :(得分:1)
确实有点奇怪,因为node-glob的非常隐式行为。但实际上这是你想要的。例如,假设您在external
中有多个文件夹,其中包含文件bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
。然后,您无法在dest中保存两个具有相同名称的文件。
如果没有查看node-glob源代码,我认为它可以通过在/*/
之后砍掉文件路径来缓解这种情况,并自动将其附加到dest
路径。
说过这是隐式行为,如果你真的需要数组或想要在将来添加文件,你可以通过自己分配数组gulp.src(['firstfile.js'])
来轻松避免它。
由于Gulp docs没有提供关于globbing模式的太多信息,我发现这些链接是最好的帮助。 Read up on node-glob和Gulp on smashing。