0

我正在尝试返回位于不同文件夹中的扩展名为 .css 和 .styl 的文件,并在 Gulp 任务中使用它们,但没有取得多大成功。我想知道我在这里做错了什么?这是我此时的代码:

var pattrn = /(styl|css)$/g;
var path1 = './dev/**/';

var paths = {
  dev_styles: path1.match( pattrn ),
  build: './build'
};

gulp.task( 'styles', function() {
  var processors = [
    csswring,
    autoprefixer( { browsers: [ 'last 2 version' ] } )
];

return gulp
  .src( paths.dev_styles )
  .pipe( plugins.postcss( processors ) )
  .pipe( plugins.rename( { suffix: '.min'} ) )
  .pipe( gulp.dest( paths.build ) );
});

我收到此错误:

Error: Invalid glob argument: null
4

2 回答 2

0

好吧,你的问题是那不是 gulp 的工作方式。

检查有关 gulp.src的文档,它指出:

gulp.src(globs[, options]) 接受要读取的 glob 或 glob 数组。

这意味着您不需要进行花哨(怪异)的过滤,指定适当的 节点全局语法就足够了。

回到你的问题,这将解决它:

gulp.task( 'styles', function() {
  var processors = [
    csswring,
    autoprefixer( { browsers: ['last 2 version' ] } )
  ];
  return gulp
    .src( 'root_to_styl_files/**/*.styl' ) // Will get all .styl files in the specified folder & subfolders
    .pipe( plugins.postcss( processors ) )
    .pipe( plugins.rename( { suffix: '.min' } ) )
    .pipe( gulp.dest( './build' ) );
});
于 2015-12-02T15:17:26.377 回答
0

Glob 是解决方案。正如上面 avcajaraville 所建议的,不需要正则表达式。这是一个完成这项工作的片段:

.src(['./root_to_files/**/*.css', './root_to_files/**/*.styl']),

这将返回与模式匹配的文件,并使它们可供您拥有的任何 gulp 插件进一步处理(管道)。它们最终将被放在目标文件夹(dest)上,如果不进行进一步处理(例如展平、清理等),则复制原始文件夹结构。

.pipe(gulp.dest('./build'));
于 2015-12-02T16:36:36.813 回答