一些想法和选择
您的问题似乎有待解释。可能有太多的开放式答案,并且将提供许多很棒的答案。但是,根据我认为您正在做的事情,这里有一些选择:
- 使用外部配置文件,并为每个配置文件使用通配模式,并排除您不想要的内容。
- 创建一个 gulp 任务,复制一些源文件并将它们移动到您的 dist/a、dist/b 等。
- 将您的可重用代码转换为 node_module 并在每个应用程序 src 中“要求”它。
- 将您的可重用代码转换为 git 子模块,并将其用作每个应用程序的依赖项。与前一点配合得很好。
移动文件和文件夹的 Gulp 任务
正如您所要求的,所有共享一个存储库(我强烈建议单独存储库以简化任务),这是一个可用于移动文件的 gulp 任务。这很简单。
为方便起见,此示例/建议将分为两部分。任务,以及管理它的配置部分。您可以在 gulpfile 中使用它,也可以将其用作外部文件,如果您对三个项目使用相同的 gulpfile,这可能更容易管理。
你也可以使用 merge-stream 对多个 src & dest 执行相同的任务:
npm install --save-dev merge-stream
gulpfile.js
// =========================================================
// Projects: Project A, Project B, Project C
// info:
//
// =========================================================
// ------------------------------------------------ Requires
var gulp = require('gulp'),
merge = require('merge-stream');
// -------------------------------------------------- Config
var config = {
// These are some examples
reusable: [
'./src/reusableCode/scripts/**/*.js',
'./src/reusableCode/styles/**/*.css
],
productA: {
src: [ ], // Add product A src
opts: { }, // Add product A options for gulp tasks,
dest: './dist/A'
},
productB: {
src: [ ], // Add product B src
opts: { }, // Add product B options for gulp tasks,
dest: './dist/B'
},
productC: {
src: [ ], // Add product C src
opts: { }, // Add product C options for gulp tasks,
dest: './dist/C'
},
}
// --------------------------------------------------- Tasks
// ...
gulp.task('moveSrc', function(){
var prodA = gulp.src( config.reusable )
.pipe( gulp.dest( './dist/A' ) );
var prodB = gulp.src( config.reusable )
.pipe( gulp.dest( './dist/B' ) );
var prodC = gulp.src( config.reusable )
.pipe( gulp.dest( './dist/C' ) );
return merge( prodA, prodB, prodC);
});
// A task to move folders and files without `merge-stream`
// gulp.task( 'moveSingleStream', function() {
// gulp.src takes the src into a stream, and output the stream
// just by using gulp.dest . This moves files and folders around
gulp.src( config.reusable )
.pipe( './dist' );
});
// --------------------------------------------------- Build
gulp.task( 'build', [ 'moveSrc', 'otherTask1', 'otherTask2' ] );
你也可以在这个例子中跳过 config 中的 reasuable 数组,只在每个 products src 数组中添加你想要移动的内容。什么都行。
话虽如此,我建议单独的 repo 并将该可重用代码用作节点模块,但您可以使用 merge-stream 来简化使用相同任务执行多项操作的过程。我希望这会有所帮助。