我是一个喝酒的菜鸟,所以我想做的事情可能不可能,但我会感激一些帮助。
我们的项目由几个独立的模块组成,我希望能够独立构建,或者作为一个项目共同构建。文件结构如下所示:
project_root/
gulpfile.js
src/
modules/
module_A/
gulpfile.js
...
module_B/
gulpfile.js
...
module_C/
gulpfile.js
我想将构建工件放在顶层的build/
目录中,同时保留src/
目录的目录结构,如下所示:
project_root/
build/
modules/
module_A/
...
module_B/
...
module_C/
...
为了实现这一点,我尝试使用顶层的gulpfile来发现任何匹配像src/modules/*/gulpfile.js
这样的全局文件的文件,然后使用插件{{1}来调用这些文件}。我想从子模块gulp-chug
返回一个流,并允许基础构建文件处理到gulpfile.js
的管道,以便简单地管理保留文件夹结构。
我必须这样做的代码如下:
dest
和
// project_root/gulpfile.js
gulp.task('default', function() {
return gulp.src(path.join(modulesDir, '*', 'gulpfile.js')) // discover subprojects
.pipe( chug() ) // call gulpfiles in those subprojects
.pipe(gulp.dest(buildDir)); // write the output to the build dir
});
但是,我看到的情况是,我的子模块中的// src/modules/module_x/gulpfile.js
gulp.task('default', function() {
return gulp.src(path.join(config.sourceDir, '**', '*.js')); // return a stream of source files
});
文件被复制到gulpfile.js
目录中,而不是任何其他源文件。
我认为这意味着行build/
没有返回我希望从子模块中获取的对象流,但我不明白为什么。
我是否完全误解了这应该如何运作?我应该使用其他一些模式吗?