1 | "use strict";
|
2 |
|
3 | const spawn = require('cross-spawn');
|
4 |
|
5 | const logger = require('@parcel/logger');
|
6 |
|
7 | function pipeSpawn(cmd, params, opts) {
|
8 | const cp = spawn(cmd, params, Object.assign({
|
9 | env: Object.assign({
|
10 | FORCE_COLOR: logger.color,
|
11 | npm_config_color: logger.color ? 'always' : '',
|
12 | npm_config_progress: true
|
13 | }, process.env, {
|
14 | NODE_ENV: null
|
15 |
|
16 | })
|
17 | }, opts));
|
18 | cp.stdout.setEncoding('utf8').on('data', d => logger.writeRaw(d));
|
19 | cp.stderr.setEncoding('utf8').on('data', d => logger.writeRaw(d));
|
20 | return new Promise((resolve, reject) => {
|
21 | cp.on('error', reject);
|
22 | cp.on('close', function (code) {
|
23 | if (code !== 0) {
|
24 | return reject(new Error(cmd + ' failed.'));
|
25 | }
|
26 |
|
27 | logger.clear();
|
28 | return resolve();
|
29 | });
|
30 | });
|
31 | }
|
32 |
|
33 | module.exports = pipeSpawn; |
\ | No newline at end of file |