UNPKG

@omni-door/cli

Version:

A tool set for set up the standard JS project

574 lines (573 loc) 35.5 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var fs_1 = __importDefault(require("fs")); var path_1 = __importDefault(require("path")); var inquirer_1 = __importDefault(require("inquirer")); var semver_1 = __importDefault(require("semver")); var chalk_1 = __importDefault(require("chalk")); var utils_1 = require("@omni-door/utils"); var child_process_1 = require("child_process"); var utils_2 = require("../../utils"); var build_1 = __importDefault(require("../build")); var tagCustom = '$omni_custom$'; var tagDict = { '1. alpha (内测版)': 'alpha', '2. beta (公测版)': 'beta', '3. rc (候选版)': 'rc', '4. latest (正式版)': 'latest', '5. custom (自定义)': tagCustom }; var tagDictWithExtraWords = { '1. alpha (内测版 - 当前标签)': 'alpha', '2. beta (公测版 - 当前标签)': 'beta', '3. rc (候选版 - 当前标签)': 'rc', '4. latest (正式版 - 当前标签)': 'latest' }; var iterDict = { automatic: '1. automatic(自动)', manual: '2. manual(手动)', ignore: '3. ignore(忽略)' }; function getAutoIterDict(version, tag) { var _a, _b, _c; if (tag === 'latest') { return _a = {}, _a["1. patch (" + version + " -> " + semver_1.default.inc(version, 'patch') + ")"] = ['latest', semver_1.default.inc(version, 'patch')], _a["2. minor (" + version + " -> " + semver_1.default.inc(version, 'minor') + ")"] = ['latest', semver_1.default.inc(version, 'minor')], _a["3. major (" + version + " -> " + semver_1.default.inc(version, 'major') + ")"] = ['latest', semver_1.default.inc(version, 'major')], _a; } if (tag === 'rc') { return _b = {}, _b["1. pre-release (" + version + " -> " + semver_1.default.inc(version, 'prerelease', tag) + ")"] = [tag || 'prerelease', semver_1.default.inc(version, 'prerelease', tag)], _b["2. patch (" + version + " -> " + semver_1.default.inc(version, 'patch') + ")"] = ['latest', semver_1.default.inc(version, 'patch')], _b["3. minor (" + version + " -> " + semver_1.default.inc(version, 'minor') + ")"] = ['latest', semver_1.default.inc(version, 'minor')], _b["4. major (" + version + " -> " + semver_1.default.inc(version, 'major') + ")"] = ['latest', semver_1.default.inc(version, 'major')], _b; } return _c = {}, _c["1. pre-release (" + version + " -> " + semver_1.default.inc(version, 'prerelease', tag) + ")"] = [tag || 'prerelease', semver_1.default.inc(version, 'prerelease', tag)], _c["2. pre-patch (" + version + " -> " + semver_1.default.inc(version, 'prepatch', tag) + ")"] = [tag || 'prepatch', semver_1.default.inc(version, 'prepatch', tag)], _c["3. pre-minor (" + version + " -> " + semver_1.default.inc(version, 'preminor', tag) + ")"] = [tag || 'preminor', semver_1.default.inc(version, 'preminor', tag)], _c["4. pre-major (" + version + " -> " + semver_1.default.inc(version, 'premajor', tag) + ")"] = [tag || 'premajor', semver_1.default.inc(version, 'premajor', tag)], _c; } function default_1(config, iterTactic, autoRelease) { var _a, _b, _c, _d, _e; return __awaiter(this, void 0, void 0, function () { function handleReleaseSuc(msg) { msg = msg || 'Release completed (发布完成)!'; return function (isExit) { utils_1.logCongrat(msg); isExit && process.exit(0); }; } function handleReleaseErr(msg) { msg = msg || 'Release failed (发布失败)!'; return function (err) { err && utils_1.logErr(err); msg && utils_1.logErr(msg); process.exit(1); }; } function getPkjData(pkjPath) { var pkj = { name: 'OMNI-PROJECT', version: '0.0.1' }; if (fs_1.default.existsSync(pkjPath)) { delete require.cache[pkjPath]; // delete cache in order to avoid version may not correct pkj = require(pkjPath); } return pkj; } var e_1, type, template, build, _f, release, plugins, git, npm, autoBuild, autoTag, preflight, _g, _h, test, _j, eslint, _k, prettier, _l, stylelint, _m, commitlint, branch, branchInfo_1, _o, automatic_1, ignore_1, manual_1, tag_1, verify, rest, pkjPath_1, pkj_1, iterVersion_1, needIteration_1, versionErrMsg_1, tagErrMsg_1, versionRepeatMsg_1, existedVersions_1, versionsPromise_1, defaultTag_1, autoIterDict_1, err_1, versionShellSuffix, plugin_handles, version, versionIterTactic, _p, _q, _i, name_1, handler, hasChange, gitUrl, gitOriginUrl_1, gitOmniUrl_1, canPush_1, remote_1, execArr, commit, push, _r, npmUrl_1, shouldExit, err_2; var _this = this; return __generator(this, function (_s) { switch (_s.label) { case 0: _s.trys.push([0, 2, , 3]); // node version pre-check return [4 /*yield*/, utils_1.nodeVersionCheck('8')]; case 1: // node version pre-check _s.sent(); return [3 /*break*/, 3]; case 2: e_1 = _s.sent(); utils_1.logWarn(e_1); return [3 /*break*/, 3]; case 3: if (!config || JSON.stringify(config) === '{}') { utils_1.logWarn('Please initialize project first'); utils_1.logWarn('请先初始化项目'); process.exit(0); } // bind exit signals utils_2.signal(); type = config.type, template = config.template, build = config.build, _f = config.release, release = _f === void 0 ? {} : _f, plugins = config.plugins; git = release.git, npm = release.npm, autoBuild = release.autoBuild, autoTag = release.autoTag, preflight = release.preflight; _g = preflight || {}, _h = _g.test, test = _h === void 0 ? false : _h, _j = _g.eslint, eslint = _j === void 0 ? false : _j, _k = _g.prettier, prettier = _k === void 0 ? false : _k, _l = _g.stylelint, stylelint = _l === void 0 ? false : _l, _m = _g.commitlint, commitlint = _m === void 0 ? false : _m, branch = _g.branch; if (!branch) return [3 /*break*/, 5]; branchInfo_1 = ''; return [4 /*yield*/, utils_1.exec([path_1.default.resolve(__dirname, 'branch.sh') + " " + branch + " \"" + utils_1.logPrefix() + "\""], function (results) { branchInfo_1 = results[0]; }, function () { process.exit(1); })]; case 4: _s.sent(); if (!~branchInfo_1.indexOf('current branch is')) { // branch check failed! return [2 /*return*/]; } _s.label = 5; case 5: _s.trys.push([5, 37, , 38]); _o = iterTactic || {}, automatic_1 = _o.automatic, ignore_1 = _o.ignore, manual_1 = _o.manual, tag_1 = _o.tag, verify = _o.verify, rest = __rest(_o, ["automatic", "ignore", "manual", "tag", "verify"]); pkjPath_1 = path_1.default.resolve(process.cwd(), 'package.json'); pkj_1 = getPkjData(pkjPath_1); iterVersion_1 = manual_1 || (typeof automatic_1 === 'string' ? automatic_1 : '') || pkj_1.version; needIteration_1 = ignore_1 === void 0 && manual_1 === void 0 && automatic_1 === void 0; versionErrMsg_1 = "Please input valid version (\u8BF7\u8F93\u5165\u6709\u6548\u7684\u7248\u672C\u53F7)\n\n Reference to (\u7248\u672C\u53F7\u89C4\u5219\u53EF\u53C2\u8003): https://semver.org/"; tagErrMsg_1 = 'The tag can only contain letters (标签只能包含字母)'; versionRepeatMsg_1 = function (ver) { return "The " + ver + " is not available (" + ver + " \u4E0D\u53EF\u7528)"; }; existedVersions_1 = []; versionsPromise_1 = Promise.resolve(); if (npm) { versionsPromise_1 = utils_1.getNpmVersions(pkj_1.name, { registry: typeof npm === 'string' ? npm : void 0 }) .then(function (res) { existedVersions_1.push.apply(existedVersions_1, res); }); } defaultTag_1 = manual_1 ? (_b = (_a = manual_1.match(/[a-zA-Z]+/g)) === null || _a === void 0 ? void 0 : _a[0]) !== null && _b !== void 0 ? _b : 'latest' : (_e = (_d = (_c = pkj_1 === null || pkj_1 === void 0 ? void 0 : pkj_1.version) === null || _c === void 0 ? void 0 : _c.match(/[a-zA-Z]+/g)) === null || _d === void 0 ? void 0 : _d[0]) !== null && _e !== void 0 ? _e : 'latest'; autoIterDict_1 = {}; if (!(needIteration_1 || (npm && !tag_1))) return [3 /*break*/, 7]; return [4 /*yield*/, new Promise(function (resolve, reject) { inquirer_1.default.prompt([ { name: 'presetTag', type: 'list', when: function () { return !tag_1 && !autoTag; }, choices: function () { var result = Object.keys(tagDict); var presetTags = Object.values(tagDict); if (!presetTags.some(function (v) { return v === defaultTag_1; })) { var key = "0. " + defaultTag_1 + " (\u5F53\u524D\u6807\u7B7E)"; result.unshift(key); tagDictWithExtraWords[key] = defaultTag_1; } else { var ind = presetTags.indexOf(defaultTag_1); var preset = result[ind]; result.splice(ind, 1, preset.replace(')', ' - 当前标签)')); } return result; }, default: function () { var result = Object.keys(tagDict); var presetTags = Object.values(tagDict); if (presetTags.some(function (v) { return v === defaultTag_1; })) { return result[presetTags.indexOf(defaultTag_1)].replace(')', ' - 当前标签)'); } }, message: 'Choose the tag (选择标签):' }, { name: 'label', type: 'input', when: function (answer) { return tagDict[answer.presetTag] === tagCustom; }, default: function () { if (defaultTag_1 === 'rc') return 'latest'; return defaultTag_1; }, validate: function (val) { if (/^[a-zA-Z]+$/g.test(val)) { return true; } return tagErrMsg_1; }, message: utils_2.logo() + "Input the tag (\u8F93\u5165\u6807\u7B7E):" }, { name: 'iter', type: 'list', when: function () { return needIteration_1; }, choices: [iterDict.automatic, iterDict.manual, iterDict.ignore], message: utils_2.logo() + "Select the way of iteration (\u9009\u62E9\u8FED\u4EE3\u65B9\u5F0F):" }, { name: 'version_semantic', type: 'list', when: function (answer) { return answer.iter === iterDict.automatic; }, choices: function (answer) { Object.assign(autoIterDict_1, getAutoIterDict(pkj_1.version, answer.label || tagDict[answer.presetTag] || tagDictWithExtraWords[answer.presetTag] || defaultTag_1)); return __spreadArrays(Object.keys(autoIterDict_1)); }, message: utils_2.logo() + "Select the version (\u9009\u62E9\u7248\u672C):" }, { name: 'version_manual', type: 'input', when: function (answer) { return answer.iter === iterDict.manual; }, validate: function (val) { if (!semver_1.default.valid(val)) { console.info('\n'); utils_1.logWarn(versionErrMsg_1); return false; } return true; }, message: utils_2.logo() + "Input the version (\u8F93\u5165\u7248\u672C\u53F7):" }, { name: 'changeVersion', type: 'confirm', message: function () { var currentVer = iterVersion_1; var type = tag_1 === 'latest' ? 'patch' : 'prerelease'; while (~existedVersions_1.indexOf(iterVersion_1)) { iterVersion_1 = semver_1.default.inc(iterVersion_1, type, tag_1); } return "The " + chalk_1.default.strikethrough.red(currentVer) + " had been occupied, would you like change to " + chalk_1.default.bold.underline.green(iterVersion_1) + "?"; }, when: function (answer) { return __awaiter(_this, void 0, void 0, function () { var version_manual, version_semantic, presetTag, label, versionTag; var _a, _b, _c; return __generator(this, function (_d) { switch (_d.label) { case 0: version_manual = answer.version_manual, version_semantic = answer.version_semantic, presetTag = answer.presetTag, label = answer.label; iterVersion_1 = version_manual || ((_a = autoIterDict_1[version_semantic]) === null || _a === void 0 ? void 0 : _a[1]) || iterVersion_1; versionTag = (_b = iterVersion_1 === null || iterVersion_1 === void 0 ? void 0 : iterVersion_1.match(/[a-zA-Z]+/g)) === null || _b === void 0 ? void 0 : _b[0]; tag_1 = label || tagDict[presetTag] || tagDictWithExtraWords[presetTag] || (versionTag === 'rc' ? 'latest' : versionTag) || ((_c = autoIterDict_1[version_semantic]) === null || _c === void 0 ? void 0 : _c[0]) || defaultTag_1; if (!npm) return [2 /*return*/, false]; return [4 /*yield*/, versionsPromise_1]; case 1: _d.sent(); return [2 /*return*/, existedVersions_1.some(function (v) { return iterVersion_1 === v; })]; } }); }); } } ]) .then(function (answers) { var _a, _b; var iter = answers.iter, version_semantic = answers.version_semantic, version_manual = answers.version_manual, changeVersion = answers.changeVersion; if (changeVersion === false) { var currentVer = (_b = version_manual !== null && version_manual !== void 0 ? version_manual : (_a = autoIterDict_1[version_semantic]) === null || _a === void 0 ? void 0 : _a[1]) !== null && _b !== void 0 ? _b : ''; utils_1.logWarn(versionRepeatMsg_1(currentVer)); process.exit(1); } switch (iter) { case iterDict.automatic: // eslint-disable-next-line no-case-declarations automatic_1 = iterVersion_1 !== null && iterVersion_1 !== void 0 ? iterVersion_1 : true; break; case iterDict.manual: manual_1 = iterVersion_1; break; case iterDict.ignore: ignore_1 = true; break; } resolve(void 0); }) .catch(handleReleaseErr()); })]; case 6: _s.sent(); return [3 /*break*/, 9]; case 7: if (!npm) return [3 /*break*/, 9]; return [4 /*yield*/, versionsPromise_1]; case 8: _s.sent(); if (~existedVersions_1.indexOf(iterVersion_1)) { utils_1.logWarn(versionRepeatMsg_1(iterVersion_1)); process.exit(0); } _s.label = 9; case 9: if (manual_1 && !semver_1.default.valid(manual_1)) { utils_1.logWarn(versionErrMsg_1); process.exit(0); } if (!(autoBuild && !autoRelease)) return [3 /*break*/, 13]; utils_1.logEmph(utils_1.italic('Start building the project automatically')); utils_1.logEmph(utils_1.italic('开始自动构建项目')); _s.label = 10; case 10: _s.trys.push([10, 12, , 13]); return [4 /*yield*/, build_1.default(config, __assign(__assign({}, rest), { verify: verify }), true)]; case 11: _s.sent(); return [3 /*break*/, 13]; case 12: err_1 = _s.sent(); handleReleaseErr('Auto building the project failed(自动构建项目失败)!')(); return [3 /*break*/, 13]; case 13: utils_1.logTime('RELEASE(发布)'); utils_1.logInfo('Starting release process(开始发布)!'); if (!(!autoBuild && verify && test)) return [3 /*break*/, 15]; return [4 /*yield*/, utils_1.exec(['npm test'], function () { return utils_1.logSuc('Unit Test!'); }, handleReleaseErr('The unit test not pass(单元测试失败)'))]; case 14: _s.sent(); _s.label = 15; case 15: if (!(!autoBuild && verify && eslint)) return [3 /*break*/, 17]; return [4 /*yield*/, utils_1.exec(['npm run lint:es'], function () { return utils_1.logSuc('Eslint!'); }, handleReleaseErr("The eslint not pass(eslint\u6821\u9A8C\u5931\u8D25) \n try to exec(\u5C1D\u8BD5\u6267\u884C): " + utils_1.underline('npm run lint:es_fix')))]; case 16: _s.sent(); _s.label = 17; case 17: if (!(!autoBuild && verify && prettier)) return [3 /*break*/, 19]; return [4 /*yield*/, utils_1.exec(['npm run lint:prettier'], function () { return utils_1.logSuc('Prettier!'); }, handleReleaseErr("The prettier not pass(prettier\u6821\u9A8C\u5931\u8D25) \n try to exec(\u5C1D\u8BD5\u6267\u884C): " + utils_1.underline('npm run lint:prettier_fix')))]; case 18: _s.sent(); _s.label = 19; case 19: if (!(!autoBuild && verify && stylelint)) return [3 /*break*/, 21]; return [4 /*yield*/, utils_1.exec(['npm run lint:style'], function () { return utils_1.logSuc('Stylelint!'); }, handleReleaseErr("The stylelint not pass(stylelint\u6821\u9A8C\u5931\u8D25) \n try to exec(\u5C1D\u8BD5\u6267\u884C): " + utils_1.underline('npm run lint:style_fix')))]; case 20: _s.sent(); _s.label = 21; case 21: versionShellSuffix = ignore_1 ? 'i' : manual_1 ? "m " + manual_1 : typeof automatic_1 === 'string' ? "a " + automatic_1 : ''; return [4 /*yield*/, utils_1.exec([path_1.default.resolve(__dirname, 'version.sh') + " \"" + utils_1.logPrefix() + "\" " + versionShellSuffix], function () { // re-require to get correct version pkj_1 = getPkjData(pkjPath_1); utils_1.logEmph("The current version is " + pkj_1.version); utils_1.logEmph("\u5F53\u524D\u7248\u672C\u53F7\u4E3A " + pkj_1.version); }, handleReleaseErr('The version iteration failed(版本迭代失败)!'))]; case 22: _s.sent(); plugin_handles = plugins && plugins.length > 0 && utils_2.getHandlers(plugins, 'release'); if (!plugin_handles) return [3 /*break*/, 26]; version = pkj_1 ? pkj_1.version : 'unknown'; versionIterTactic = ignore_1 ? 'ignore' : manual_1 ? 'manual' : 'auto'; _p = []; for (_q in plugin_handles) _p.push(_q); _i = 0; _s.label = 23; case 23: if (!(_i < _p.length)) return [3 /*break*/, 26]; name_1 = _p[_i]; handler = plugin_handles[name_1]; return [4 /*yield*/, handler({ type: type, template: template, build: build, release: release }, { version: version, versionIterTactic: versionIterTactic, verify: verify, tag: tag_1 })]; case 24: _s.sent(); _s.label = 25; case 25: _i++; return [3 /*break*/, 23]; case 26: hasChange = !!child_process_1.execSync('git status -s').toString(); if (!(git && hasChange)) return [3 /*break*/, 33]; gitUrl = git.trim(); gitOriginUrl_1 = ''; gitOmniUrl_1 = ''; return [4 /*yield*/, utils_1.exec([ 'git remote get-url origin' ], function (results) { gitOriginUrl_1 = results[0] && results[0].trim(); }, function () { }, true)]; case 27: _s.sent(); return [4 /*yield*/, utils_1.exec([ 'git remote get-url omni' ], function (results) { gitOmniUrl_1 = results[0] && results[0].trim(); }, function () { }, true)]; case 28: _s.sent(); canPush_1 = true; remote_1 = gitUrl === gitOmniUrl_1 ? 'omni' : 'origin'; if (!(gitUrl !== gitOriginUrl_1 && gitUrl !== gitOmniUrl_1)) return [3 /*break*/, 30]; !gitOmniUrl_1 && utils_1.logInfo("Adding remote omni " + git + "(\u65B0\u589E\u8FDC\u7A0B\u5730\u5740omni " + git + ")"); execArr = ['git remote remove omni', "git remote add omni " + git]; !gitOmniUrl_1 && execArr.shift(); // remote没有omni,移除remove操作 return [4 /*yield*/, utils_1.exec(execArr, function () { utils_1.logEmph("git remote omni: " + git); remote_1 = 'omni'; }, function () { utils_1.logWarn('setting git remote failed'); utils_1.logWarn('git remote 设置失败'); canPush_1 = false; })]; case 29: _s.sent(); _s.label = 30; case 30: commit = commitlint && !verify ? "git commit -m'[" + pkj_1.name.toUpperCase() + "]: " + pkj_1.version + "' --no-verify" : "git commit -m'[" + pkj_1.name.toUpperCase() + "]: " + pkj_1.version + "'"; push = commitlint && !verify ? "git push " + remote_1 + " " + (branch || 'master') + " --no-verify" : "git push " + remote_1 + " " + (branch || 'master'); _r = canPush_1; if (!_r) return [3 /*break*/, 32]; return [4 /*yield*/, utils_1.exec([ 'git add -A', "" + commit, "" + push ], function () { utils_1.logSuc('Pushing to git-repo successfully!'); utils_1.logSuc('git仓库推送成功!'); }, handleReleaseErr('Pushing to git-repo failed(git仓库推送失败)!'))]; case 31: _r = (_s.sent()); _s.label = 32; case 32: _r; _s.label = 33; case 33: if (!npm) return [3 /*break*/, 36]; npmUrl_1 = ''; return [4 /*yield*/, utils_1.exec(['npm get registry'], function (results) { npmUrl_1 = results[0] && results[0].trim(); }, function () { }, true)]; case 34: _s.sent(); return [4 /*yield*/, new Promise(function (resolve, reject) { var npm_publish = child_process_1.spawn('npm', [ 'publish', "--registry=" + ((npm && typeof npm === 'string') ? npm : npmUrl_1), "--tag=" + tag_1, '--access public' ], { detached: true, stdio: 'inherit' }); if (npm_publish.stdout) { npm_publish.stdout.on('data', function (data) { console.info(data.toString()); }); } if (npm_publish.stderr) { npm_publish.stderr.on('data', function (data) { console.info(data.toString()); }); } npm_publish.on('error', handleReleaseErr('The npm-package publish failed(npm包发布失败)!')); npm_publish.on('close', function (code) { if (code === 0) { utils_1.logSuc("The npm-package publish success with version " + pkj_1.version + "@" + tag_1 + "!"); utils_1.logSuc("npm\u5305\u53D1\u5E03\u6210\u529F, \u7248\u672C\u53F7\u4E3A " + pkj_1.version + "@" + tag_1 + "\uFF01"); resolve(null); } else { reject(); } }); })]; case 35: _s.sent(); _s.label = 36; case 36: utils_1.logTime('RELEASE(发布)', true); shouldExit = !autoRelease; handleReleaseSuc()(shouldExit); return [3 /*break*/, 38]; case 37: err_2 = _s.sent(); utils_1.logErr(err_2); handleReleaseErr('👆 Oops! release process occured some accidents(糟糕!发布过程发生了一点意外)')(); return [3 /*break*/, 38]; case 38: return [2 /*return*/]; } }); }); } exports.default = default_1;