提交 0280160b 编写于 作者: A Alex Dima

More simplifications to extensions gulp tasks (#67863)

上级 5830f685
......@@ -11,7 +11,6 @@ const path = require('path');
const tsb = require('gulp-tsb');
const es = require('event-stream');
const filter = require('gulp-filter');
const rimraf = require('rimraf');
const util = require('./lib/util');
const watcher = require('./lib/watch');
const createReporter = require('./lib/reporter').createReporter;
......@@ -43,12 +42,6 @@ const tasks = compilations.map(function (tsconfigFile) {
const name = relativeDirname.replace(/\//g, '-');
// Tasks
const clean = 'clean-extension:' + name;
const compile = 'compile-extension:' + name;
const watch = 'watch-extension:' + name;
const compileBuild = 'compile-extension-build:' + name;
const root = path.join('extensions', relativeDirname);
const srcBase = path.join(root, 'src');
const src = path.join(srcBase, '**');
......@@ -107,10 +100,9 @@ const tasks = compilations.map(function (tsconfigFile) {
const srcOpts = { cwd: path.dirname(__dirname), base: srcBase };
gulp.task(clean, cb => rimraf(out, cb));
const cleanTask = () => util.primraf(out);
gulp.task(compile, util.taskSeries(cleanTask, () => {
const compileTask = util.task.series(cleanTask, () => {
const pipeline = createPipeline(false, true);
const input = gulp.src(src, srcOpts);
......@@ -119,19 +111,21 @@ const tasks = compilations.map(function (tsconfigFile) {
.pipe(pipeline())
.pipe(gulp.dest(out))
);
}));
});
gulp.task(watch, [clean], () => {
const watchTask = util.task.series(cleanTask, () => {
const pipeline = createPipeline(false);
const input = gulp.src(src, srcOpts);
const watchInput = watcher(src, srcOpts);
return watchInput
return util.streamToPromise(
watchInput
.pipe(util.incremental(pipeline, input))
.pipe(gulp.dest(out));
.pipe(gulp.dest(out))
);
});
gulp.task(compileBuild, util.taskSeries(cleanTask, () => {
const compileBuildTask = util.task.series(cleanTask, () => {
const pipeline = createPipeline(true, true);
const input = gulp.src(src, srcOpts);
......@@ -140,15 +134,20 @@ const tasks = compilations.map(function (tsconfigFile) {
.pipe(pipeline())
.pipe(gulp.dest(out))
);
}));
});
// Tasks
gulp.task('compile-extension:' + name, compileTask);
gulp.task('watch-extension:' + name, watchTask);
gulp.task('compile-extension-build:' + name, compileBuildTask);
return {
compile: compile,
watch: watch,
compileBuild: compileBuild
compileTask: compileTask,
watchTask: watchTask,
compileBuildTask: compileBuildTask
};
});
gulp.task('compile-extensions', tasks.map(t => t.compile));
gulp.task('watch-extensions', tasks.map(t => t.watch));
gulp.task('compile-extensions-build', tasks.map(t => t.compileBuild));
gulp.task('compile-extensions', util.task.parallel(...tasks.map(t => t.compileTask)));
gulp.task('watch-extensions', util.task.parallel(...tasks.map(t => t.watchTask)));
gulp.task('compile-extensions-build', util.task.parallel(...tasks.map(t => t.compileBuildTask)));
......@@ -208,14 +208,23 @@ function streamToPromise(stream) {
});
}
exports.streamToPromise = streamToPromise;
function taskSeries(...tasks) {
return async () => {
for (let i = 0; i < tasks.length; i++) {
await tasks[i]();
}
};
}
exports.taskSeries = taskSeries;
var task;
(function (task) {
function series(...tasks) {
return async () => {
for (let i = 0; i < tasks.length; i++) {
await tasks[i]();
}
};
}
task.series = series;
function parallel(...tasks) {
return async () => {
await Promise.all(tasks.map(t => t()));
};
}
task.parallel = parallel;
})(task = exports.task || (exports.task = {}));
function getVersion(root) {
let version = process.env['BUILD_SOURCEVERSION'];
if (!version || !/^[0-9a-f]{40}$/i.test(version)) {
......
......@@ -263,12 +263,21 @@ export function streamToPromise(stream: NodeJS.ReadWriteStream): Promise<void> {
}
export type PromiseTask = () => Promise<void>;
export function taskSeries(...tasks: PromiseTask[]): () => Promise<void> {
return async () => {
for (let i = 0; i < tasks.length; i++) {
await tasks[i]();
}
};
export namespace task {
export function series(...tasks: PromiseTask[]): () => Promise<void> {
return async () => {
for (let i = 0; i < tasks.length; i++) {
await tasks[i]();
}
};
}
export function parallel(...tasks: PromiseTask[]): () => Promise<void> {
return async () => {
await Promise.all(tasks.map(t => t()));
};
}
}
export function getVersion(root: string): string | undefined {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册