在多个项目中使用gulp任务

时间:2017-04-19 09:06:00

标签: git npm gulp bower git-submodules

我有一个生成favicons的gulp任务。我想在多个项目中重复使用此任务。它基于realfavicongenerator.net输出的gulp文件。

我该如何处理? favicon生成器任务是一个git repo,它可以作为我的其他项目git repos中的子模块引用吗?或者我应该将其生成为npm或bower包。

我希望能够将一些选项传递给生成器任务以覆盖默认设置。

我不知道从哪里开始,我们将非常感谢任何正确方向的帮助。

由于

1 个答案:

答案 0 :(得分:3)

我做了可重复使用的gulp任务,因为我们有多个使用gulp的前端项目。我找到的最好的方法是创建一个私有的npm包,我在其他项目中使用它的git URL添加它。

构建可共享任务的Node.js模块

您只需拥有index.jspackage.json的回购。安装必要的gulp依赖项并将它们保存在包文件中。

index.js中,将要重复使用的功能导出为任务。

const gulp = require('gulp'),
    gulpif = require('gulp-if'),
    concat = require('gulp-concat'),
    args = require('yargs').argv;

module.exports = {
    concat: function(src, dest, options) {
        return gulp.src(src)
            .pipe(gulpif(args.prod, concat()))
            .pipe(gulp.dest(dest));
    }
};

由于此模块将使用完成任务所需的大多数依赖项,因此您的其他项目依赖项将缩减到他们明确需要的最小值。

使用您的任务模块

然后,在您的其他项目中,使用其git URL安装该软件包。

npm install --save-dev git+ssh://git@github.com:onebitrocket/onebitrocket-gulp-utils.git

此git网址格式也适用于yarn

在你的项目gulpfile.js中,只需使用它。

const gulp = require('gulp'),
      onebitrocket = require('onebitrocket-gulp-utils');

// use a function which returns the result of your util.
gulp.task('js', () => onebitrocket.concat('src/**/*.js', 'www/'));

注意:不需要将软件包发布到npm注册表以便使用它。您所需要的只是对存储库的读访问权限。