30 lines
768 B
JavaScript
30 lines
768 B
JavaScript
|
const os = require('os');
|
||
|
const path = require('path');
|
||
|
const child_process = require('child_process');
|
||
|
|
||
|
const root = path.resolve(__dirname, '..');
|
||
|
const args = process.argv.slice(2);
|
||
|
const options = {
|
||
|
cwd: process.cwd(),
|
||
|
env: process.env,
|
||
|
stdio: 'inherit',
|
||
|
encoding: 'utf-8',
|
||
|
};
|
||
|
|
||
|
if (os.type() === 'Windows_NT') {
|
||
|
options.shell = true
|
||
|
}
|
||
|
|
||
|
let result;
|
||
|
|
||
|
if (process.cwd() !== root || args.length) {
|
||
|
// We're not in the root of the project, or additional arguments were passed
|
||
|
// In this case, forward the command to `yarn`
|
||
|
result = child_process.spawnSync('yarn', args, options);
|
||
|
} else {
|
||
|
// If `yarn` is run without arguments, perform bootstrap
|
||
|
result = child_process.spawnSync('yarn', ['bootstrap'], options);
|
||
|
}
|
||
|
|
||
|
process.exitCode = result.status;
|