【问题标题】:Use a gulp task in mulitple projects在多个项目中使用 gulp 任务
【发布时间】:2017-09-15 09:55:09
【问题描述】:

我有一个生成网站图标的 gulp 任务。我想在多个项目中重用这个任务。它基于 realfavicongenerator.net 输出的 gulp 文件。

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

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

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

谢谢

【问题讨论】:

  • 我的回答有帮助吗?如果没有,您介意就您的需求给我们一些反馈吗?如果您找到了不同的答案,我们鼓励您写下并接受它。
  • 嗨,Emile,我开始研究这个并取得了一些进展,但由于工作重点,我不得不暂时离开这个,我会告诉你我的进展情况 - 谢谢

标签: git npm gulp bower git-submodules


【解决方案1】:

我做了可重用的 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 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 注册表即可使用它。您所需要的只是对 repo 的读取访问权限。

【讨论】:

  • 我终于开始着手解决这个问题了。效果很好。对于它的价值,我将 realfavicongenerator 生成的 gulp 任务抽象到一个可重用的模块中,跨多个需要相同输出的项目。
猜你喜欢
  • 2015-02-04
  • 2016-10-31
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多