@riddance/deploy
Version:
31 lines • 4.1 kB
JavaScript
import { exec } from 'node:child_process';
export async function install(dir) {
const exitCode = await new Promise((resolve, reject) => {
const proc = exec('npm install --no-optional --production', {
cwd: dir,
}, err => {
if (err) {
reject(err);
return;
}
proc.stdout?.pipe(process.stdout);
proc.stderr?.pipe(process.stderr);
});
const onError = (error) => {
reject(error);
proc.removeListener('error', onError);
proc.removeListener('exit', onExit);
};
const onExit = (code) => {
resolve(code);
proc.removeListener('error', onError);
proc.removeListener('exit', onExit);
};
proc.addListener('error', onError);
proc.addListener('exit', onExit);
});
if (exitCode !== 0) {
throw new Error('Non-zero exit code from npm');
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxHQUFXO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FDYix3Q0FBd0MsRUFDeEM7WUFDSSxHQUFHLEVBQUUsR0FBRztTQUNYLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtnQkFDWCxPQUFNO1lBQ1YsQ0FBQztZQUNELElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNqQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDckMsQ0FBQyxDQUNKLENBQUE7UUFDRCxNQUFNLE9BQU8sR0FBRyxDQUFDLEtBQVksRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQTtRQUNELE1BQU0sTUFBTSxHQUFHLENBQUMsSUFBbUIsRUFBRSxFQUFFO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtZQUNiLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ3JDLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQ3ZDLENBQUMsQ0FBQTtRQUNELElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFBO0lBQ2xELENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ25vZGU6Y2hpbGRfcHJvY2VzcydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluc3RhbGwoZGlyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBleGl0Q29kZSA9IGF3YWl0IG5ldyBQcm9taXNlPG51bWJlciB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgcHJvYyA9IGV4ZWMoXG4gICAgICAgICAgICAnbnBtIGluc3RhbGwgLS1uby1vcHRpb25hbCAtLXByb2R1Y3Rpb24nLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGN3ZDogZGlyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcHJvYy5zdGRvdXQ/LnBpcGUocHJvY2Vzcy5zdGRvdXQpXG4gICAgICAgICAgICAgICAgcHJvYy5zdGRlcnI/LnBpcGUocHJvY2Vzcy5zdGRlcnIpXG4gICAgICAgICAgICB9LFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IG9uRXJyb3IgPSAoZXJyb3I6IEVycm9yKSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpXG4gICAgICAgICAgICBwcm9jLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpXG4gICAgICAgICAgICBwcm9jLnJlbW92ZUxpc3RlbmVyKCdleGl0Jywgb25FeGl0KVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG9uRXhpdCA9IChjb2RlOiBudW1iZXIgfCBudWxsKSA9PiB7XG4gICAgICAgICAgICByZXNvbHZlKGNvZGUpXG4gICAgICAgICAgICBwcm9jLnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uRXJyb3IpXG4gICAgICAgICAgICBwcm9jLnJlbW92ZUxpc3RlbmVyKCdleGl0Jywgb25FeGl0KVxuICAgICAgICB9XG4gICAgICAgIHByb2MuYWRkTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgcHJvYy5hZGRMaXN0ZW5lcignZXhpdCcsIG9uRXhpdClcbiAgICB9KVxuICAgIGlmIChleGl0Q29kZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vbi16ZXJvIGV4aXQgY29kZSBmcm9tIG5wbScpXG4gICAgfVxufVxuIl19