ts-dev-stack
Version:
Development stack for TypeScript libraries
62 lines • 2.43 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return command;
}
});
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _concatWritable = /*#__PURE__*/ _interop_require_default(require("../lib/concatWritable.cjs"));
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
var RETRY_MAX = 30;
var RETRY_DELAY = 2000;
var RETRY_ERRORS = /.*(ETARGET|ENOTEMPTY|ENOENT|ECONNRESET).*/;
function command(args, options, callback) {
var cwd = options.cwd || process.cwd();
var queue = new _queuecb.default(1);
var count = 1;
function install(cb) {
console.log("npm install".concat(count > 1 ? " (".concat(count, ")") : ''));
var cp = _crossspawncb.default.crossSpawn('npm', [
'install'
].concat(args), {
encoding: 'utf8'
});
cp.stdout.pipe(process.stdout);
cp.stderr.pipe(process.stderr);
var stderr = cp.stderr.pipe((0, _concatWritable.default)(function(output) {
stderr.output = output.toString();
}));
_crossspawncb.default.worker(cp, {
encoding: 'utf8'
}, function(err) {
if (!err) return cb();
if (!stderr.output.match(RETRY_ERRORS)) return cb(err);
if (++count > RETRY_MAX) return callback(new Error("Failed to install ".concat(_path.default.basename(cwd))));
queue.defer(function(cb) {
return setTimeout(cb, RETRY_DELAY);
});
queue.defer(_crossspawncb.default.bind(null, 'npm', [
'cache',
'clean',
'-f'
], {
stdio: 'inherit'
}));
queue.defer(install.bind(null));
cb();
});
}
queue.defer(install.bind(null));
queue.await(callback);
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }
;