javascript - 无法理解 gulp.src() 的行为

标签 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' 转换为 数组 ['external/bower_components/bootstrap-sass-official/assets/stylesheets/_bootstrap.scss']。那么为什么在第二种情况下“dest/”文件夹内有很多嵌套文件夹,但在第一种情况下“dest/”文件夹内没有嵌套文件夹?

最佳答案

确实,这有点奇怪,因为 Node 全局的行为非常隐式。但事实上这正是你所希望的。例如,考虑一下您在 external 中有多个文件夹的情况,它们都包含文件 bootstrap-sass-official/assets/stylesheets/_bootstrap.scss')。那么您就无法在目标中保存两个同名的文件。

在没有研究过 node-glob 源代码的情况下,我认为它可以通过在 /*/ 之后切割文件路径来缓解这种情况,并自动将其附加到您的 dest 路径。

话虽如此,这是隐式行为,如果您确实需要该数组或希望将来添加文件,您可以通过自己分配数组来轻松避免它gulp.src(['firstfile.js'])

由于 Gulp 文档没有提供太多有关通配模式的信息,我发现这些链接是最好的帮助。 Read up on node-globGulp on smashing .

关于javascript - 无法理解 gulp.src() 的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29913434/

相关文章:

ajax - 如何在本地主机上使用 fetch 发出 CORS 请求?

javascript - Gulp.src 匹配带方括号的文件夹

javascript - jQuery - 暂时禁用功能然后再次启用它

javascript - LocalStorage 设置数组内的对象 Ionic List

javascript - reveal.js 工作/引导示例

node.js - Socket.io和node.js,无法理解内存使用情况

Node.js 和 Express - BadRequestError : request aborted

gulp - 如何使用 bower 在 scrollmagic 中包含 ‘animation.gsap’

css - 使用gulp + foundation(sass版)报错

javascript - 在 Firestore 中,如何在不为每个键创建索引的情况下执行涉及映射中键的复合查询?