2017-04-19 29 views
0

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

我该如何解决这个问题? favicon发生器任务是一个git repo,它可以在我的其他项目git repos中作为子模块引用吗?或者我应该将它作为npm或bower软件包生成。

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

我不知道从哪里开始,任何帮助正确的方向将不胜感激。

感谢

+0

我的答案是否有帮助?如果不是,你会介意给我们一些关于你的需求的反馈吗?如果你找到了不同的答案,鼓励写和接受它。 –

+1

嗨,埃米尔,我开始看到这个,并取得了一些进展,但由于工作重点,我不得不暂时离开这里,我会让你知道我是如何得到的 - 谢谢 – onebitrocket

回答

1

我做了可重复使用的大口的任务,因为我们有多个前端项目全部采用一饮而尽。我发现的最好的方法是创建一个私有的npm包,并使用它的git URL添加到其他项目中。

构建的共享任务

一个Node.js的模块,所有你需要的是一个index.jspackage.json回购。安装必要的吞咽依赖并将它们保存在包文件中。

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)); 
    } 
}; 

因为这个模块将被使用,使任务所需的最依赖,你的其他项目的依赖将缩小到他们明确需要的最低限度。

用你的任务模块

然后,在你的其他项目,其混帐URL安装软件包。

npm install --save-dev git+ssh://[email protected]:onebitrocket/onebitrocket-gulp-utils.git 

这混帐URL格式还与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注册表才能使用它。所有你需要的是读取存取权的回购。

+1

我终于轮到在这工作了。效果很好。对于什么值得我将由realfavicongenerator生成的吞噬任务抽象为需要相同输出的多个项目中的可重用模块。 – onebitrocket