gulp怎么使用外部配置文件

发布于 2022-09-01 22:29:52 字数 1308 浏览 10 评论 0

之前项目一直用Grunt,但是由于日积月累,随着文件数量增多,Grunt的生成速度越来越慢,因为看好gulp文件流处理的特性,所以打算改用gulp作为新项目的前端代码管理工具。

现在遇到需求如下:

之前用grunt会有一个外部配置文件(json文件),主要作用是配置JS文件跟样式文件的合并规则。如:在命名为【js】的文件夹下有四个文件分别是:a.js b.js c.js d.js。先需要将a.js与d.js合并为x.js并压缩为x.min.js;将b.js,c.js,d.js合并为y.js并压缩为y.min.js。目标文件夹均为results/js/文件夹

在现有的grunt配置中代码为:

js_concat = {
   '../results/js/x.js':[
        'js/a.js',
        'js/d.js'
    ],
    '../result/js/y.js':[
        'js/b.js',
        'js/c.js',
        'js/d.js'
    ]
},
js_uglify = {
    '../result/js/x.min.js':'../result/js/x.js',
    '../result/js/y.min.js':'../result/js/y.js'    
}

当然,这个文件是按照grunt的工作流程设置的,如果是glup的话我认为应该没有生成x.js跟y.js这一步,而是通过文件流操作,直接生成目标需求。

现在遇到问题如下

我知道gulp是可以引用外部配置文件的,但是目前知道的方法是:

var gulp = require('gulp');
var uglify = require('gulp-uglify');
var config = require('./config.json');//外部配置文件名为config.json

function doStuff(cfg) {
  return gulp.src(cfg.src)
    .pipe(uglify())
    .pipe(gulp.dest(cfg.dest));
}

gulp.task('dry', function() {
  doStuff(config.desktop);
  doStuff(config.mobile);
});

这样的话就没法达到,grunt那种每次增加需要合并并压缩的JS文件只需要更改外部配置文件然后直接执行grunt,就可以完成整个过程的效果。

那么,gulp有没有类似grunt的配置呢?如果没有,具体的实现以上需求的操作是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

许一世地老天荒 2022-09-08 22:29:52

config.js 可以这样写

module.exports = {
   desktop: {
       src: [
        'js/a.js',
        'js/d.js'
       ],
       name: 'x.js',
       dest: './'
    },
    mobile: {
      src: [
        'js/b.js',
        'js/c.js',
        'js/d.js'
      ],
      name: 'y.js',
      dest: './'
    }
}

然后 gulpfile.js 这样写:


var gulp = require('gulp');
var uglify = require('gulp-uglify');
var config = require('./config.js');//外部配置文件名为config.js
var concat = require('gulp-concat');
var rename = require('gulp-rename');

function doStuff(cfg) {
  return gulp.src(cfg.src)
    .pipe(concat(cfg.name))
    .pipe(uglify())
    .pipe(rename({
      suffix: '.min'
    }))
    .pipe(gulp.dest(cfg.dest));
}

gulp.task('dry', function() {
  doStuff(config.desktop);
  doStuff(config.mobile);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文