无法理解gulp.src()的行为
这是我的代码:
'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/')); }); };
这个stringgulp.dest('dest /')会将文件_bootstrap.scss保存在'dest /'文件夹中。
如果我改变string
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/')
将在dest / bower_components / bootstrap-sass-official / assets / stylesheets文件夹中保存文件_bootstrap.scss。
你能解释一下,给我的链接在哪里阅读关于为什么在第一种情况下,我们有没有很多的文件夹内的dest文件夹,在第二种情况下有很多文件夹内的dest文件夹?
如果我理解正确,在第二种情况下,glob模式将被转换为完整文件path的数组。 这意味着在我的例子中,glob nodejs模块会将glob模式的'external / * / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss'转换为array ['external / bower_components / bootstrap-sass-official / assets / stylesheets / _bootstrap.scss']。 那么为什么我在第二种情况下在“dest /”文件夹内有大量的嵌套文件夹,而在第一种情况下在“dest /”文件夹内没有嵌套的文件夹呢?
那确实有点奇怪,因为非常隐含的节点glob行为。 但事实上,这是你想要的。 例如,考虑一下你在external
有多个文件夹,这两个文件夹都有文件bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')
。 那么你不能在你的dest中保存两个同名的文件。
没有查看节点glob源,我认为它通过在/*/
之后斩断文件path来减轻这种情况,并且会自动将它附加到你的dest
path。
说了这是隐含的行为,如果你真的需要这个数组或者想在未来添加文件的话,你可以通过自己指定数组gulp.src(['firstfile.js'])
来轻松避免它。
由于Gulp文档不提供太多的globbing模式的信息,我发现这些链接是最好的帮助。 在node-glob和gulp上捣毁 。