我有一个生成favicons的gulp任务。我想在多个项目中重复使用此任务。它基于realfavicongenerator.net输出的gulp文件。
我该如何处理? favicon生成器任务是一个git repo,它可以作为我的其他项目git repos中的子模块引用吗?或者我应该将其生成为npm或bower包。
我希望能够将一些选项传递给生成器任务以覆盖默认设置。
我不知道从哪里开始,我们将非常感谢任何正确方向的帮助。
由于
答案 0 :(得分:3)
我做了可重复使用的gulp任务,因为我们有多个使用gulp的前端项目。我找到的最好的方法是创建一个私有的npm包,我在其他项目中使用它的git URL添加它。
您只需拥有index.js
和package.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注册表以便使用它。您所需要的只是对存储库的读访问权限。