在项目之间重用Gulp任务

时间:2016-06-29 06:59:43

标签: javascript build gulp pipeline

我正在研究一组坐在GitHub上的项目,我想在这些项目之间共享Gulp构建管道。一切都使用Babel,包括Gulp任务本身。我要共享的常见Gulpfile需要Babel,然后是文件夹中的所有任务 - 常见文件如下所示:

require("babel-core/register");
require("require-dir")("gulp/tasks");

然后我尝试将公共管道打包到NPM包中,并将其作为devDependency添加到另一个项目中。然后我的项目的gulpfile取决于常见的设置,如下所示:

require("./node_modules/cratis.client.javascript.setup/gulpfile"); 

当我运行它时,似乎加载Babel然后开始加载我的任务,但是immediataly失败了:

(function (exports, require, module, __filename, __dirname) { import gulp from "gulp";
                                                              ^^^^^^
SyntaxError: Unexpected token import
    at Object.exports.runInThisContext (vm.js:53:16)

这表明Babel没有加载,我觉得很奇怪 - 因为我希望看到与第一次需要相关的加载错误。

无法弄清楚这里发生了什么,所以我决定尝试不同的路径; Git子模块。 我将公共管道项目作为Git子模块添加到项目中,并包含相对于子模块位置的gulpfile。 这似乎根本不起作用 - 基本上找不到文件。

其他人在做什么?我还没有找到任何好的例子。

如果Git子模块路径是正确的方式,我想看到“node_modules”也是共享的,并且是一种简单的方法来维护它。

2 个答案:

答案 0 :(得分:0)

可能您忘记包含Babel依赖项以使模块导入正常工作。 在这里看一下这个项目https://github.com/andreasonny83/mdl-starter-kit 你需要npm install --save-dev babel-core babel-loader babel-preset-es2015和babel-register

答案 1 :(得分:0)

好吧,我想我终于发现了这个问题。 npm依赖项安装到父项目"依赖项"只有,不是" devDependencies"。因此,因为在npm cratis.client.javascript.setup中您只定义了devDependencies,所以不会在npm install项目中使用https://github.com/Cratis/Client.JavaScript.Core安装thore。要解决此问题,只需将cratis.client.javascript.setup下的所有devDepencies移到"依赖关系"。