@yolkai/nx-workspace
Version:
71 lines (70 loc) • 2.69 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const runAll = require("npm-run-all");
const rxjs_1 = require("rxjs");
const path_1 = require("path");
const tasks_runner_1 = require("./tasks-runner");
const output_1 = require("../utils/output");
const fileutils_1 = require("../utils/fileutils");
const utils_1 = require("./utils");
const file_utils_1 = require("../core/file-utils");
exports.defaultTasksRunner = (tasks, options) => {
const cli = file_utils_1.cliCommand();
const isYarn = path_1.basename(process.env.npm_execpath || 'npm').startsWith('yarn');
assertPackageJsonScriptExists(cli);
const commands = tasks.map(t => utils_1.getCommand(cli, isYarn, t));
return new rxjs_1.Observable(subscriber => {
runAll(commands, {
parallel: options.parallel || false,
maxParallel: options.maxParallel || 3,
continueOnError: true,
stdin: process.stdin,
stdout: process.stdout,
stderr: process.stderr
})
.then(() => {
tasks.forEach(task => {
subscriber.next({
task: task,
type: tasks_runner_1.AffectedEventType.TaskComplete,
success: true
});
});
})
.catch(e => {
e.results.forEach((result, i) => {
subscriber.next({
task: tasks[i],
type: tasks_runner_1.AffectedEventType.TaskComplete,
success: result.code === 0
});
});
})
.finally(() => {
subscriber.complete();
// fix for https://github.com/nrwl/nx/issues/1666
if (process.stdin['unref'])
process.stdin.unref();
});
});
};
function assertPackageJsonScriptExists(cli) {
// Make sure the `package.json` has the `nx: "nx"` command needed by `npm-run-all`
const packageJson = fileutils_1.readJsonFile('./package.json');
if (!packageJson.scripts || !packageJson.scripts[cli]) {
output_1.output.error({
title: `The "scripts" section of your 'package.json' must contain "${cli}": "${cli}"`,
bodyLines: [
output_1.output.colors.gray('...'),
' "scripts": {',
output_1.output.colors.gray(' ...'),
` "${cli}": "${cli}"`,
output_1.output.colors.gray(' ...'),
' }',
output_1.output.colors.gray('...')
]
});
return process.exit(1);
}
}
exports.default = exports.defaultTasksRunner;