@riddance/deploy
Version:
29 lines • 3.83 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 --omit=dev', {
cwd: dir,
}, err => {
if (err) {
reject(err);
}
});
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.stderr?.pipe(process.stderr);
proc.addListener('error', onError);
proc.addListener('exit', onExit);
});
if (exitCode !== 0) {
throw new Error(`Non-zero exit code from npm install in ${dir}`);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnBtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibnBtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUV6QyxNQUFNLENBQUMsS0FBSyxVQUFVLE9BQU8sQ0FBQyxHQUFXO0lBQ3JDLE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBSSxPQUFPLENBQWdCLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1FBQ2xFLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FDYix3QkFBd0IsRUFDeEI7WUFDSSxHQUFHLEVBQUUsR0FBRztTQUNYLEVBQ0QsR0FBRyxDQUFDLEVBQUU7WUFDRixJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUNmLENBQUM7UUFDTCxDQUFDLENBQ0osQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUU7WUFDN0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFBO1FBQ0QsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFtQixFQUFFLEVBQUU7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFBO1lBQ2IsSUFBSSxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDckMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7UUFDdkMsQ0FBQyxDQUFBO1FBQ0QsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFBO1FBQ2pDLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2xDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ3BDLENBQUMsQ0FBQyxDQUFBO0lBQ0YsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQywwQ0FBMEMsR0FBRyxFQUFFLENBQUMsQ0FBQTtJQUNwRSxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4ZWMgfSBmcm9tICdub2RlOmNoaWxkX3Byb2Nlc3MnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbnN0YWxsKGRpcjogc3RyaW5nKSB7XG4gICAgY29uc3QgZXhpdENvZGUgPSBhd2FpdCBuZXcgUHJvbWlzZTxudW1iZXIgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IHByb2MgPSBleGVjKFxuICAgICAgICAgICAgJ25wbSBpbnN0YWxsIC0tb21pdD1kZXYnLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGN3ZDogZGlyLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVyciA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgICAgICAgICByZWplY3QoZXJyKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIClcbiAgICAgICAgY29uc3Qgb25FcnJvciA9IChlcnJvcjogRXJyb3IpID0+IHtcbiAgICAgICAgICAgIHJlamVjdChlcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2V4aXQnLCBvbkV4aXQpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb25FeGl0ID0gKGNvZGU6IG51bWJlciB8IG51bGwpID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoY29kZSlcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgICAgIHByb2MucmVtb3ZlTGlzdGVuZXIoJ2V4aXQnLCBvbkV4aXQpXG4gICAgICAgIH1cbiAgICAgICAgcHJvYy5zdGRlcnI/LnBpcGUocHJvY2Vzcy5zdGRlcnIpXG4gICAgICAgIHByb2MuYWRkTGlzdGVuZXIoJ2Vycm9yJywgb25FcnJvcilcbiAgICAgICAgcHJvYy5hZGRMaXN0ZW5lcignZXhpdCcsIG9uRXhpdClcbiAgICB9KVxuICAgIGlmIChleGl0Q29kZSAhPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vbi16ZXJvIGV4aXQgY29kZSBmcm9tIG5wbSBpbnN0YWxsIGluICR7ZGlyfWApXG4gICAgfVxufVxuIl19