UNPKG

ts-dev-stack

Version:

Development stack for TypeScript libraries

62 lines 2.43 kB
"use strict"; 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; }