1

这是我当前的代码,用于将相关文件从我的源代码复制到我的构建目录。它没有预期工作

return gulp.src([
    'src/**/*',
    '!src/**/*(*.sass|*.scss|*.js)',
    '!src/(components|config|elements|less|sass|scss|platforms)',
    'src/console.js',
    'src/cordova.js',
    'src/config.xml',
]).pipe(plugins.copy("www", {prefix: 1}));

我的想法是这样的:

  1. 选择 src 中的所有文件和文件夹
  2. 删除所有 js 和 sass 文件,因为它们被编译/concat/minified 并复制以构建另一个任务
  3. 但是必须复制console.js 和cordova.js,所以我想将它们重新包含到glob 中

好吧,我认为 globArray 中的元素顺序是一个优先级或其他东西,因此例如 console.js 在它被过滤掉后会被重新包含。好像不是这样:(

我能做些什么?

4

1 回答 1

3

因此,您面临的真正问题是缺乏“调试”或“检查”当前在 gulp 流中处理的内容的能力。在我的工作流程中,两个不可替代的 gulp 插件可帮助您了解发生了什么:

  • 吞咽工具
  • gulp-重命名

    var gutil = require('gulp-util'); var rename = require('gulp-rename');

现在,尝试将此代码片段附加到您的示例中,如下所示:

var gutil = require('gulp-util');
var rename = require('gulp-rename');
.....

return gulp.src([
    'src/**/*',
    '!src/**/*(*.sass|*.scss|*.js)',
    '!src/(components|config|elements|less|sass|scss|platforms)',
    'src/console.js',
    'src/cordova.js',
    'src/config.xml',
]).pipe(rename(function(filepath) {
          gutil.log(filepath.basename);
})).pipe(plugins.copy("www", {prefix: 1}));

然后您所要做的就是查看日志中的输出以查看正在处理哪些文件,然后相应地更新您的 globbing。

此外,您最好一个接一个或成对地测试您的路径,看看您是否在正确的轨道上,这样当所有 glob 都没有按预期工作时,您不会不知所措。隔离全局问题并进行相应更新。

也只是一个提示,让你走上正轨,这个 glob:

'!src/**/*(*.sass|*.scss|*.js)'

需要是:

'!src/**/*.{sass,scss,js}'

我希望这能让你走上正轨!

于 2014-11-17T17:21:52.930 回答