无法理解gulp.src()

时间:2015-04-28 07:49:18

标签: javascript node.js gulp

这是我的代码:

'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 /'第一种情况下的文件夹?

1 个答案:

答案 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-globGulp on smashing