2016-12-30 58 views
0

是否有可能使用git子模块有自己的gulp设置和npm模块?Gulp和git submodules

这是想法:

/ Project 
|- Modules 
|-- Grid 
|--- some files and subfolders 
|--- gulpfile.js 
|-- Typography 
|--- some files and subfolders 
|--- gulpfile.js 
| 
| gulpfile.js 

Modules是文件夹,我想保留数目不详的git的子模块。每个git子模块都有自己的gulpfile.js和NPM模块。

问题是 - 当我从根文件夹启动gulp进程时,主gulpfile.js是否可以从包含的git子模块启动所有其他gulpfile.js文件?

+0

你是什么意思“启动所有其他gulpfile.js文件”?你的意思是在你的根文件夹中运行'gulp'时运行所有其他gulpfiles的'default'任务? –

+0

是的,确切地说。感谢比我更具体。 –

回答

1

gulp-hub让你在子文件夹中运行gulpfiles。当您在根文件夹中运行gulp foo时,它将为每个子模块运行foo任务。

由于您需要为每个子模块的gulp文件的位置传递一个数组,因此使用glob软件包可以自动查找哪些子模块以及哪些子模块具有gulpfiles(而不是全部硬编码)。

这是你项目/ gulpfile.js会是什么样子:

var glob = require('glob'); 
var hub = require('gulp-hub'); 

hub(glob.sync('./Modules/*/[Gg]ulpfile.js')); 

现在,当您在根文件夹中运行gulp它将运行每个子模块的default任务:

[email protected]:~/Project$ gulp 
[08:45:12] Loading Modules/Grid/gulpfile.js 
[08:45:12] Loading Modules/Typography/Gulpfile.js 
[08:45:12] Using gulpfile ~/Project/gulpfile.js 
[08:45:12] Starting 'default'... 
[08:45:12] Starting 'Modules/Grid/gulpfile.js-default'... 
[08:45:12] Finished 'Modules/Grid/gulpfile.js-default' after 129 μs 
[08:45:12] Starting 'Modules/Typography/Gulpfile.js-default'... 
[08:45:12] Finished 'Modules/Typography/Gulpfile.js-default' after 102 μs 
[08:45:12] Finished 'default' after 2.03 ms 
+0

谢谢你的快速和建设性的答案斯文,我会尽快尝试,并会在我的测试后回复。 –

+0

是否有可能以类似的方式设置'gulp watch'? –

+0

只需在根文件夹中输入'gulp watch'。这将在您的所有子模块中运行“watch”任务。 –