【问题标题】:Gulp concat in orderGulp 按顺序连接
【发布时间】:2017-12-20 14:21:50
【问题描述】:

我想使用 GulpJS 创建一个 sass 文件。主要问题是gulp.src() 有一个特定的顺序,我想在连接时遵守。

我的任务不起作用...

gulp.task('createGlobalScss', function(done) {
  return gulp.src([
    'sass/colors.scss',
    'sass/theme.scss',
    'sass/settings.scss',
    'sass/functions.scss',
    'sass/mixins.scss',
    'sass/components/**/settings.scss',
    'sass/theme.scss',
    'sass/components/**/*.scss'
  ])
  .pipe(concat('globalScss.scss'))
  .pipe(gulp.dest('./'));
  done();
});

问题:结果是无序的,我不想使用来自 SASS 的@import

【问题讨论】:

    标签: javascript node.js gulp gulp-concat


    【解决方案1】:

    查看gulp-order

    gulp 插件 gulp-order 允许您使用与 gulp.src 相同的语法重新排序文件流。

    然后你的任务可以这样组织......

    var order = require('gulp-order');
    
    gulp.task('createGlobalScss', function() {
      return gulp.src('sass/**/*.scss')
        .pipe(order([
          'sass/colors.scss',
          'sass/theme.scss',
          'sass/settings.scss',
          'sass/functions.scss',
          'sass/mixins.scss',
          'sass/components/**/settings.scss',
          'sass/theme.scss',
          'sass/components/**/*.scss'
        ], { base: __dirname }))
        .pipe(concat('globalScss.scss'))
        .pipe(gulp.dest('./'));
    });
    

    您也可以在此处删除done,因为在这种情况下您不需要显式异步回调。另请注意,我需要指定一个 base option 才能使其按预期工作。


    根据我们下面的讨论,here is a proof of concept 证明了这一点与建议的解决方案一起使用...

    【讨论】:

    • 它在golbalScss.scss 中不起作用,它不是以sass/colors.scssgulp-order 的内容开头的。
    • $badge-bg 在哪个文件中找到?对我来说看起来像是引导程序
    • @tonymx227 已编辑,如果您在此处找到任何其他文件,请尝试将 sass/**/*.scss 添加到订单数组的末尾。您在此处列出的顺序是否明确标识了您拥有的所有文件?
    • 它对sass/**/*.scss也不起作用,不尊重数组的顺序...我认为gulp-order更改数组的顺序...
    • @tonymx227 我确实也看到这在我的示例中没有按预期工作。我用可选的{ base: __dirname } 编辑了我的答案,它现在按预期工作。你可以试试这个选项并告诉我吗?
    猜你喜欢
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 2015-02-15
    • 1970-01-01
    • 2013-02-03
    • 2016-11-12
    相关资源
    最近更新 更多