您可以在项目之间共享一个 gulp 框架吗?

Can you share a gulp framework between projects?

我有很多项目都遵循特定的文件夹结构和约定。

我不想复制整个项目,而是希望每个项目都有一个配置对象,并且每个项目都链接到全局框架。

示例:

/gulp-framework
    index.js
/project-a
    gulpfile.js
    configuration.js
/project-b
    gulpfile.js
    configuration.js

里面index.js

var configuration = require('configuration');

里面 configuration.js:

module.exports = function() {
   return { foo : true };
}

在 gulp 文件中我会有:

require('./configuration');
require('../gulp-framework');

但是 运行 gulp 给我留下了一个错误

'Cannot find module configuration'.

我想我想做的就是将配置对象传递给全局框架,但运气不佳。

想法?

基本上在index.js中使用require('configuration')会在/gulp-framework/node_modules/中寻找configuration模块。它不会从 project-aproject-b 加载 configuration.js。 (阅读更多关于 require() 如何工作的确切逻辑 here。)

您需要明确地将配置和 gulp 对象从 gulpfile.js 传递到 index.js:

每个gulpfile.js:

var config = require('./configuration.js');
var gulp = require('../gulp-framework')(require('gulp'), config);

// project-specific stuff using gulp and config goes here

index.js:

module.exports = function(gulp, config) {
  // project-independent stuff using gulp and config goes here

  return gulp;
};