UNPKG

@elora-cloud/elora-cli

Version:
134 lines (128 loc) 5.13 kB
'use strict'; var path = require('node:path'); var node_url = require('node:url'); var findpkg = require('find-package-json'); var prompts = require('prompts'); var releaseIt = require('release-it'); var index = require('../../common/index.cjs'); var constant = require('../../common/constant.cjs'); var logger = require('../../common/logger.cjs'); var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null; function _interopDefaultCompat (e) { return e && typeof e === 'object' && 'default' in e ? e : { default: e }; } var findpkg__default = /*#__PURE__*/_interopDefaultCompat(findpkg); var prompts__default = /*#__PURE__*/_interopDefaultCompat(prompts); var releaseIt__default = /*#__PURE__*/_interopDefaultCompat(releaseIt); const __dirname$1 = path.dirname(node_url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('cli/commands/release/index.cjs', document.baseURI).href)))); let PLUGIN_PATH = path.join(__dirname$1, './elora-cli-release-plugin.mjs'); if (path.isAbsolute(PLUGIN_PATH)) { PLUGIN_PATH = `file://${PLUGIN_PATH}`; } async function release(command) { await index.isMonorepoProject(); if (command.registry) { // 配置了registry index.setPublishRegistry(command.registry); } let increment; let preRelease = false; const includes = ['beta', 'alpha', 'rc', 'next']; const excludes = ['patch', 'minor', 'major']; const p = findpkg__default.default(constant.CWD); const pkg = p.next().value; const v = pkg?.version; const name = pkg?.name; if (!pkg || !v || !name) { throw new Error('获取package.json失败'); } const splitIndex = !name.includes('/') ? 1 : name.indexOf('/') + 1; const myName = name.startsWith('@') ? name.slice(splitIndex) : name; if (!command.tag) { const response = await prompts__default.default({ type: 'select', name: 'tag', message: '请选择要发布的版本', choices: [ { title: '小版本', value: 'patch', description: '用于小版本更新', }, { title: '中版本', value: 'minor', description: '用于中版本更新', }, { title: '大版本', value: 'major', description: '用于大版本更新', }, { title: '内测版本', value: 'alpha', description: '用于发布内部版本,bug多,不稳定,不断添加新功能', }, { title: '公测版本', value: 'beta', description: '用于发布公测版本的包,比alpha版本稳定,不断添加新功能', }, { title: '候选版本', value: 'rc', description: '用于发布候选版本的包,基本不添加新功能,修复完bug即可进入正式版', }, { title: '前瞻版本', value: 'next', description: '用于发布候选版本的包,基本不添加新功能,修复完bug即可进入正式版', }, ], }); increment = response.tag; if (includes.includes(response.tag)) { increment = v.includes(response.tag) ? undefined : 'patch'; preRelease = response.tag; command.tag = response.tag; } } else { if (!excludes.includes(command.tag)) { increment = v.includes(command.tag) ? undefined : 'patch'; preRelease = command.tag; } } if (command.tag) { index.setPublishTag(command.tag); } // eslint-disable-next-line no-template-curly-in-string const tagName = index.isMonorepo() ? `${myName}-v` + '${version}' : 'v${version}'; // eslint-disable-next-line no-template-curly-in-string const commitMessage = index.isMonorepo() ? `release(${myName}): ` + '${version}' : 'release: ${version}'; try { await releaseIt__default.default({ plugins: { [PLUGIN_PATH]: {}, }, npm: { publish: false, versionArgs: ['--workspaces-update=false'], }, increment, preRelease, git: { tagName, commitMessage, }, }); } catch (e) { if (e.message.includes('Working dir must be clean')) { logger.errorConsole('请先合并或者提交代码'); } else { console.log(e); } } } exports.release = release;