dnmp 0.0.0-alpha.0.3 → 0.0.0-alpha.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cli.mjs CHANGED
@@ -155,7 +155,7 @@ const loaderToken = async (config) => {
155
155
  //#endregion
156
156
  //#region package.json
157
157
  var name = "dnmp";
158
- var version = "0.0.0-alpha.0.3";
158
+ var version = "0.0.0-alpha.0.4";
159
159
 
160
160
  //#endregion
161
161
  //#region src/config.ts
@@ -195,7 +195,7 @@ const isMonorepo = async (config) => {
195
195
  packageContexts: [],
196
196
  packages: []
197
197
  };
198
- const is = !!(workspacePath ? parse(readFileSync(workspacePath, "utf-8")) : { packages: [] })?.packages.length;
198
+ const is = !!(workspacePath ? parse(readFileSync(workspacePath, "utf-8")) : { packages: [] })?.packages?.length || false;
199
199
  const { packages: workSpacePackages } = parse(readFileSync(workspacePath, "utf-8"));
200
200
  let packages = [];
201
201
  let packageContexts = [];
@@ -259,6 +259,15 @@ const gitTags = async (config) => {
259
259
  } });
260
260
  };
261
261
 
262
+ //#endregion
263
+ //#region src/runCommand.ts
264
+ const runCommand = async (config, command, args) => {
265
+ await x(command, args, { nodeOptions: {
266
+ stdio: "inherit",
267
+ cwd: config.cwd
268
+ } });
269
+ };
270
+
262
271
  //#endregion
263
272
  //#region src/update-files.ts
264
273
  const JSON_SPACING = 2;
@@ -497,12 +506,6 @@ const bumpVersion = async () => {
497
506
  await getCurrentVersion(config);
498
507
  await promptForNewVersion(config);
499
508
  }
500
- console.log("npm", [
501
- "publish",
502
- `--//registry.npmjs.org/:_authToken=${config.token.value}`,
503
- "--access",
504
- "public"
505
- ].join(" "));
506
509
  const isConfirmUpdate = await confirm({
507
510
  message: "是否确认更新 package.json ?",
508
511
  initialValue: true
@@ -515,6 +518,12 @@ const bumpVersion = async () => {
515
518
  await updateFiles(config);
516
519
  await gitCommit(config);
517
520
  await gitTags(config);
521
+ await runCommand(config, "npm", [
522
+ "publish",
523
+ `--//registry.npmjs.org/:_authToken=${config.token.value}`,
524
+ "--access",
525
+ "public"
526
+ ]);
518
527
  outro("Done.");
519
528
  };
520
529
 
package/dist/cli.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","names":["token","defaultConfig: IConfigOptions","packageContexts: IPackageContexts[]","process","version","version","DEFAULT_STYLE: UIStyle","pc","UI_STYLE_MAP: Record<string, UIStyle>","finalVersion: string","pc","resolvePackage: IUpdatePackages","process","token","error: any","setToken","token","error: any"],"sources":["../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../src/constant.ts","../src/utils.ts","../src/token.ts","../package.json","../src/config.ts","../src/git.ts","../src/update-files.ts","../src/version/current.ts","../src/version/new.version.ts","../src/command/bump.ts","../src/command/token.ts","../src/cli.ts"],"sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export const CACHE_FOLDER_NAME = '.cache'\nexport const CACHE_FILE_NAME = 'token.ts'\nexport const CACHE_TOKEN_FILE_PATH = `${CACHE_FOLDER_NAME}/${CACHE_FILE_NAME}`\nexport const CUSTOM_RELEASE_PREFIX = 'custom'\nexport const CANCEL_PROCESS = 'Current operation canceled.'\n","import fs from 'node:fs'\nimport { cancel, isCancel } from '@clack/prompts'\nimport boxen from 'boxen'\nimport { createJiti } from 'jiti'\nimport { CANCEL_PROCESS } from '@/constant.ts'\n\nexport const checkDirExist = (dirPath: string) => {\n return fs.existsSync(dirPath)\n}\n\nexport const createDir = (dirPath: string) => {\n if (!checkDirExist(dirPath)) {\n fs.mkdirSync(dirPath)\n }\n}\n\nexport const printWarning = (message: string) =>\n console.log(boxen(message, {\n title: 'Warning',\n padding: 1,\n borderStyle: 'round',\n borderColor: 'yellow',\n }))\n\nexport const isCancelProcess = (value: unknown, message: string = CANCEL_PROCESS) => {\n if (isCancel(value)) {\n cancel(message)\n return process.exit(0)\n }\n}\n\nexport const loaderTs = async (path: string): Promise<string> => {\n const loader = createJiti(path)\n return await loader.import(path, { default: true })\n}\n","import type { IConfigOptions } from '@/types'\nimport { writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport { CACHE_FOLDER_NAME } from '@/constant.ts'\nimport { createDir, loaderTs } from '@/utils.ts'\n\nexport const setToken = async (config: IConfigOptions, token: string): Promise<void> => {\n createDir(resolve(config.cwd, CACHE_FOLDER_NAME))\n await writeFile(config.token.file, `export default \"${token}\"`)\n}\n\nexport const loaderToken = async (config: IConfigOptions): Promise<string> => {\n return await loaderTs(config.token.file)\n}\n","","import type { IConfigOptions, IPackage, IPackageContexts } from '@/types'\nimport { readFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport * as process from 'node:process'\nimport { findUp } from 'find-up'\nimport { glob } from 'glob'\nimport { parse } from 'yaml'\nimport { CACHE_TOKEN_FILE_PATH } from '@/constant.ts'\nimport { loaderToken } from '@/token.ts'\nimport { name } from '../package.json'\n\nconst CURRENT_PATH = resolve(import.meta.dirname, '../')\n\nconst defaultConfig: IConfigOptions = {\n root: '',\n cwd: '',\n token: {\n name: 'token.ts',\n file: resolve(CURRENT_PATH, `${CACHE_TOKEN_FILE_PATH}`),\n value: '',\n },\n release: '',\n currentVersion: '',\n monorepo: {\n is: false,\n workspacePath: '',\n packages: [],\n packageContexts: [],\n updatePackages: [],\n },\n packages: '',\n}\n\nconst collectPackageFiles = async (config: IConfigOptions, packages: string[]) => {\n const files = ['package.json']\n files.push(...await glob(packages, {\n cwd: config.cwd,\n ignore: ['**/node_modules/**'],\n }))\n\n return [...files]\n}\n\nexport const isMonorepo = async (\n config: IConfigOptions,\n): Promise<IConfigOptions['monorepo']> => {\n const workspacePath = await findUp('pnpm-workspace.yaml', {\n cwd: config.cwd,\n }) as string\n\n if (!workspacePath) {\n return {\n is: false,\n workspacePath: '',\n packageContexts: [],\n packages: [],\n }\n }\n\n const workspaceYaml = workspacePath ? parse(readFileSync(workspacePath, 'utf-8')) : { packages: [] }\n\n const is = !!workspaceYaml?.packages.length\n\n const { packages: workSpacePackages } = parse(readFileSync(workspacePath, 'utf-8'))\n\n let packages = []\n let packageContexts: IPackageContexts[] = []\n if (workSpacePackages) {\n packages = workSpacePackages.map(\n (item: string) =>\n item.indexOf('*')\n ? `${item.replace('/*', '')}/**/package.json`\n : `${item}/**/package.json`,\n )\n\n const packageFiles = await collectPackageFiles(config, packages)\n packageContexts = packageFiles.map((file) => {\n const files = JSON.parse(readFileSync(resolve(config.cwd, file), 'utf-8')) as IPackage\n\n return {\n name: `${files.name}`,\n file,\n version: files?.version || '',\n context: files,\n }\n }) as IPackageContexts[]\n }\n\n return {\n is,\n workspacePath,\n packageContexts,\n packages,\n }\n}\n\nexport const resolveConfig = async (): Promise<IConfigOptions> => {\n const { loadConfig } = await import('c12')\n\n const config = await loadConfig<IConfigOptions>({\n name,\n defaultConfig,\n }).then(r => ({\n ...r.config,\n cwd: process.cwd(),\n root: CURRENT_PATH,\n }))\n\n config.token.value = await loaderToken(config) || ''\n\n config.monorepo = await isMonorepo(config)\n\n config.packages = resolve(config.cwd, 'package.json')\n\n return config\n}\n","import type { IConfigOptions } from '@/types'\nimport { x } from 'tinyexec'\n\nexport const gitCommit = async (config: IConfigOptions) => {\n const args = []\n\n args.push('--message', `release: v${config.release}`)\n\n args.push('--allow-empty')\n\n // if (typeof config.packages === 'object') {\n // args.push(config.packages.map(r => basename(r)).join(' '))\n // }\n // else {\n args.push(config.packages)\n // }\n\n await x('git', ['commit', ...args], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitTags = async (config: IConfigOptions) => {\n await x('git', [\n 'tag',\n '--annotate',\n '--message',\n '',\n `v${config.release}`,\n ], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitPush = async (config: IConfigOptions) => {\n await x('git', ['push', '--tags'], {\n throwOnError: true,\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\n\nconst JSON_SPACING = 2\n\nconst updatePackageJson = async (path: string, version: string) => {\n const updatePackage = JSON.parse(await readFile(path, 'utf-8'))\n updatePackage.version = version\n await writeFile(path, JSON.stringify(updatePackage, null, JSON_SPACING))\n}\n\nexport const updateFiles = async (config: IConfigOptions) => {\n if (config.monorepo.is) {\n for (const pkg of config.monorepo.updatePackages!) {\n await updatePackageJson(pkg.path, pkg.newVersion)\n }\n }\n else {\n await updatePackageJson(config.packages, config.release)\n }\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile } from 'node:fs/promises'\n\nexport const getCurrentVersion = async (config: IConfigOptions) => {\n const { packages } = config\n\n if (typeof packages === 'object') {\n // TODO load monorepo package version\n }\n else {\n const manifest = JSON.parse(await readFile(packages, {\n encoding: 'utf-8',\n })) as {\n version?: string\n }\n\n config.currentVersion = manifest.version || ''\n }\n}\n","import type { releaseType, ReleaseTypes } from '@/release-type.ts'\nimport type { IConfigOptions, IUpdatePackages } from '@/types'\nimport { cancel, isCancel, select, text } from '@clack/prompts'\nimport pc from 'picocolors'\nimport semver from 'semver'\nimport { CUSTOM_RELEASE_PREFIX } from '@/constant.ts'\nimport { isCancelProcess } from '@/utils.ts'\n\n// https://semver.org/\n\nconst PADDING = 13\nexport const validateVersion = (version: string) => !!semver.valid(version)\n\ninterface UIStyle {\n label: string\n color: (t: string) => string\n}\n\nconst DEFAULT_STYLE: UIStyle = { label: 'next', color: pc.cyan }\n\nconst UI_STYLE_MAP: Record<string, UIStyle> = {\n major: { label: 'major', color: pc.cyan },\n minor: { label: 'minor', color: pc.cyan },\n patch: { label: 'patch', color: pc.cyan },\n next: { label: 'next', color: pc.cyan },\n rc: { label: 'rc', color: pc.green },\n beta: { label: 'pre-beta', color: pc.magenta },\n alpha: { label: 'alpha', color: pc.yellow },\n}\n\n// --- 工具函数 ---\n\n/**\n * 核心逻辑:增量处理预发布版本\n * 解决 TS2345: 使用 readonly 修饰符接受 semver 的返回类型\n */\nconst processIncrementalPre = (preParts: readonly (string | number)[], base: string, prefix: string, expectedLen: number, fallback: string): string => {\n if (preParts[0] !== prefix) {\n return `${base}-${fallback}`\n }\n\n const newPre = [...preParts].slice(0, expectedLen)\n while (newPre.length < expectedLen) {\n newPre.push(0)\n }\n\n const lastIdx = expectedLen - 1\n const lastVal = newPre[lastIdx]\n const numericVal = typeof lastVal === 'number' ? lastVal : Number.parseInt(String(lastVal), 10)\n\n const isExtension = preParts.length < expectedLen\n // 逻辑:如果是补位产生的 0,则起始为 1;如果是已有的数字,则递增\n newPre[lastIdx] = isExtension ? 1 : (Number.isNaN(numericVal) ? 1 : numericVal + 1)\n\n return `${base}-${newPre.join('.')}`\n}\n\nexport const getNextVersions = (version: string): ReleaseTypes => {\n const s = semver.parse(version)\n if (!s)\n throw new Error(`[Invalid SemVer]: ${version}`)\n\n const { major: M, minor: m, patch: p, prerelease: pre } = s\n const base = `${M}.${m}.${p}`\n\n return {\n 'major': `${M + 1}.0.0`,\n 'minor': `${M}.${m + 1}.0`,\n 'patch': `${M}.${m}.${p + 1}`,\n 'next': `${M}.${m}.${p + 1}`,\n 'rc': processIncrementalPre(pre, base, 'rc', 2, 'rc.1'),\n 'beta-major': processIncrementalPre(pre, base, 'beta', 2, 'beta.1'),\n 'beta-minor': processIncrementalPre(pre, base, 'beta', 3, 'beta.0.1'),\n 'beta-patch': processIncrementalPre(pre, base, 'beta', 4, 'beta.0.0.1'),\n 'pre-beta': `${base}-beta`,\n 'alpha-beta': `${base}-alpha.beta`,\n 'alpha-major': processIncrementalPre(pre, base, 'alpha', 2, 'alpha.1'),\n 'alpha-minor': processIncrementalPre(pre, base, 'alpha', 3, 'alpha.0.1'),\n 'alpha-patch': processIncrementalPre(pre, base, 'alpha', 4, 'alpha.0.0.1'),\n }\n}\n\nexport async function promptForNewVersion(config: IConfigOptions): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg: IUpdatePackages, index: number): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg?: IUpdatePackages, index?: number): Promise<string | void> {\n const version = config.monorepo.is && pkg !== undefined ? pkg.newVersion : config.currentVersion\n\n const next = getNextVersions(version)\n\n // 动态生成选项\n const options = (Object.keys(next) as releaseType[]).map((key) => {\n const versionStr = next[key]\n\n // 1. 获取前缀(如 'alpha')\n const prefix = key.split('-')[0] ?? 'next'\n\n // 2. 彻底解决 TS18048: 即使 prefix 在 Map 里,TS 仍认为可能返回 undefined\n // 使用空值合并运算符 (??) 确保 style 永远是 UIStyle 类型\n const style = UI_STYLE_MAP[prefix] ?? DEFAULT_STYLE\n\n const label = style.label.padStart(PADDING, ' ')\n\n // 渲染版本颜色,同样处理关键字匹配的安全性\n const coloredVersion = versionStr.replace(/(rc|beta|alpha)/g, (match) => {\n const matchStyle = UI_STYLE_MAP[match] ?? DEFAULT_STYLE\n return matchStyle.color(match)\n })\n\n return {\n value: key as string,\n label: `${label} ${coloredVersion}`,\n }\n })\n\n options.push({\n value: CUSTOM_RELEASE_PREFIX,\n label: `${'custom'.padStart(PADDING, ' ')} ...`,\n })\n\n const release = await select({\n message: `Current version ${pc.bold(version)}`,\n options,\n initialValue: 'next',\n }) as releaseType | 'custom'\n\n isCancelProcess(release)\n\n let finalVersion: string\n\n if (release === CUSTOM_RELEASE_PREFIX) {\n const custom = await text({\n message: 'Enter the new version number',\n validate: val => !validateVersion(val) ? 'Invalid semver' : undefined,\n }) as string\n\n if (isCancel(custom)) {\n cancel('No version entered')\n return process.exit(0)\n }\n finalVersion = custom\n }\n else {\n // 这里的 release 已经排除了 CUSTOM 且必定属于 releaseType\n finalVersion = next[release]\n }\n\n if (\n config.monorepo.is\n && pkg !== undefined\n && index !== undefined\n && Array.isArray(config.monorepo.updatePackages)\n ) {\n config.monorepo.updatePackages[index]!.newVersion = finalVersion\n }\n else {\n config.release = finalVersion\n }\n}\n","import type { IConfigOptions, IPackageContexts, IUpdatePackages } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport process from 'node:process'\nimport { confirm, intro, outro, select } from '@clack/prompts'\nimport { findUp } from 'find-up'\nimport pc from 'picocolors'\nimport { resolveConfig } from '@/config.ts'\nimport { CANCEL_PROCESS } from '@/constant.ts'\nimport { gitCommit, gitTags } from '@/git.ts'\nimport { updateFiles } from '@/update-files.ts'\nimport { isCancelProcess, loaderTs } from '@/utils.ts'\nimport { getCurrentVersion } from '@/version/current.ts'\nimport { promptForNewVersion } from '@/version/new.version.ts'\nimport { version } from '../../package.json'\n\n/**\n * 创建包选择选项\n */\nconst createPackageOptions = (packageContexts: IPackageContexts[]) => {\n return packageContexts.map((file) => {\n return {\n value: file.name,\n label: file.name,\n hint: `${pc.red(file.version)} - ${file.file}`,\n }\n })\n}\n\n/**\n * 处理单个包的选择流程\n */\nconst processPackageSelection = async (\n config: IConfigOptions,\n selectedPackageName: string,\n packageContexts: IPackageContexts[],\n): Promise<void> => {\n const selectedPackage = packageContexts.find(opt => opt.name === selectedPackageName) as IPackageContexts\n\n const resolvePackage: IUpdatePackages = {\n name: selectedPackageName,\n path: resolve(config.cwd, selectedPackage.file),\n currentVersion: selectedPackage.version,\n newVersion: selectedPackage.version,\n };\n\n (config.monorepo.updatePackages ??= []).push(resolvePackage)\n\n await promptForNewVersion(config, resolvePackage, config.monorepo.updatePackages.length - 1)\n}\n\n/**\n * 处理 monorepo 包的选择逻辑\n */\nconst handleMonorepoPackageSelection = async (config: IConfigOptions): Promise<void> => {\n const options = createPackageOptions(config.monorepo.packageContexts)\n let availableOptions = [...options]\n\n while (availableOptions.length > 0) {\n const selectedPackage = await select({\n message: '请选择要升级版本的包:',\n options: availableOptions,\n }) as string\n\n isCancelProcess(selectedPackage)\n\n await processPackageSelection(config, selectedPackage, config.monorepo.packageContexts)\n\n // 从可用选项中移除已选择的包\n availableOptions = availableOptions.filter(opt => opt.value !== selectedPackage)\n\n if (availableOptions.length > 0) {\n const continueSelection = await confirm({\n message: '是否继续选择其他包?',\n initialValue: true,\n })\n isCancelProcess(continueSelection)\n\n if (!continueSelection) {\n break\n }\n }\n }\n}\n\n/**\n * 获取缓存文件路径\n */\nconst getCachePath = async (cwd: string): Promise<string | null> => {\n const path = await findUp('node_modules/.cache/dnmp.ts', {\n cwd,\n })\n return path || null\n}\n\n/**\n * 读取或设置统一更新版本选项\n */\nconst getOrUpdateAllUpdateVersion = async (config: IConfigOptions): Promise<boolean> => {\n const cachePath = await getCachePath(config.cwd)\n\n if (cachePath) {\n return Boolean(await loaderTs(cachePath))\n }\n\n const allUpdateVersion = await confirm({\n message: '是否以根 package.json 为主版本统一更新 workspace 所有版本',\n initialValue: true,\n }) as boolean\n\n isCancelProcess(allUpdateVersion, CANCEL_PROCESS)\n\n const cacheFilePath = resolve(config.cwd, './node_modules/.cache/dnmp.ts')\n await writeFile(cacheFilePath, `export default ${allUpdateVersion}`)\n\n return allUpdateVersion\n}\n\n/**\n * 读取包文件内容\n */\nconst readPackageFile = async (filePath: string): Promise<{ version: string }> => {\n return JSON.parse(await readFile(filePath, 'utf-8')) as { version: string }\n}\n\n/**\n * 统一更新所有包的版本\n */\nconst updateAllPackagesVersion = async (config: IConfigOptions): Promise<void> => {\n const pkg = await readPackageFile(config.packages)\n config.currentVersion = pkg.version\n\n await promptForNewVersion(config)\n\n for (const item of config.monorepo.packageContexts) {\n const resolvePkgPath = resolve(config.cwd, item.file)\n const packageInfo = await readPackageFile(resolvePkgPath);\n\n (config.monorepo.updatePackages ??= []).push({\n name: item.name,\n path: resolvePkgPath,\n currentVersion: packageInfo.version,\n newVersion: config.release,\n })\n }\n}\n\nexport const bumpVersion = async () => {\n const config = await resolveConfig()\n\n intro(pc.bgCyan(` dnmp ${version} `))\n\n if (!config.token.value) {\n outro('请先设置 release token')\n return process.exit(0)\n }\n\n if (config.monorepo.is) {\n const allUpdateVersion = await getOrUpdateAllUpdateVersion(config)\n\n if (allUpdateVersion) {\n await updateAllPackagesVersion(config)\n }\n else {\n await handleMonorepoPackageSelection(config)\n }\n }\n else {\n await getCurrentVersion(config)\n await promptForNewVersion(config)\n }\n\n console.log('npm', [\n 'publish',\n `--//registry.npmjs.org/:_authToken=${config.token.value}`,\n '--access',\n 'public',\n ].join(' '))\n\n const isConfirmUpdate = await confirm({\n message: '是否确认更新 package.json ?',\n initialValue: true,\n })\n\n isCancelProcess(isConfirmUpdate)\n\n if (!isConfirmUpdate) {\n outro('用户取消操作,后续进程停止')\n return process.exit(0)\n }\n\n await updateFiles(config)\n\n await gitCommit(config)\n await gitTags(config)\n\n // await runCommand(config, 'npm', [\n // 'publish',\n // `--//registry.npmjs.org/:_authToken=${config.token}`,\n // '--access',\n // 'public',\n // ])\n\n outro('Done.')\n}\n","import process from 'node:process'\nimport { resolveConfig } from '@/config.ts'\nimport { setToken } from '@/token.ts'\nimport { printWarning } from '@/utils.ts'\n\nexport const token = async (token: string = '') => {\n try {\n const config = await resolveConfig()\n await setToken(config, token)\n }\n catch (error: any) {\n printWarning(error.message)\n process.exit(0)\n }\n}\n","import * as process from 'node:process'\nimport cac from 'cac'\nimport { bumpVersion } from '@/command/bump.ts'\nimport { token as setToken } from '@/command/token.ts'\nimport { printWarning } from '@/utils.ts'\nimport { name, version } from '../package.json'\n\nconst cli = cac(name)\n\n// TODO 完成主目录下的 package.json 版本发布\n// TODO 完成 monorepo 相关版本,多选版本发布\n\ncli.command('')\n .action(async (options) => {\n await bumpVersion()\n })\n\ncli.command('set <token>', 'Set the local release Token')\n .action(async (token: string = '') => {\n await setToken(token)\n })\n\ncli.help()\ncli.version(version)\n\ntry {\n cli.parse()\n}\ncatch (error: any) {\n printWarning(error.message)\n process.exit(0)\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","names":["token","defaultConfig: IConfigOptions","packageContexts: IPackageContexts[]","process","version","version","DEFAULT_STYLE: UIStyle","pc","UI_STYLE_MAP: Record<string, UIStyle>","finalVersion: string","pc","resolvePackage: IUpdatePackages","process","token","error: any","setToken","token","error: any"],"sources":["../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js","../src/constant.ts","../src/utils.ts","../src/token.ts","../package.json","../src/config.ts","../src/git.ts","../src/runCommand.ts","../src/update-files.ts","../src/version/current.ts","../src/version/new.version.ts","../src/command/bump.ts","../src/command/token.ts","../src/cli.ts"],"sourcesContent":["let p = process || {}, argv = p.argv || [], env = p.env || {}\nlet isColorSupported =\n\t!(!!env.NO_COLOR || argv.includes(\"--no-color\")) &&\n\t(!!env.FORCE_COLOR || argv.includes(\"--color\") || p.platform === \"win32\" || ((p.stdout || {}).isTTY && env.TERM !== \"dumb\") || !!env.CI)\n\nlet formatter = (open, close, replace = open) =>\n\tinput => {\n\t\tlet string = \"\" + input, index = string.indexOf(close, open.length)\n\t\treturn ~index ? open + replaceClose(string, close, replace, index) + close : open + string + close\n\t}\n\nlet replaceClose = (string, close, replace, index) => {\n\tlet result = \"\", cursor = 0\n\tdo {\n\t\tresult += string.substring(cursor, index) + replace\n\t\tcursor = index + close.length\n\t\tindex = string.indexOf(close, cursor)\n\t} while (~index)\n\treturn result + string.substring(cursor)\n}\n\nlet createColors = (enabled = isColorSupported) => {\n\tlet f = enabled ? formatter : () => String\n\treturn {\n\t\tisColorSupported: enabled,\n\t\treset: f(\"\\x1b[0m\", \"\\x1b[0m\"),\n\t\tbold: f(\"\\x1b[1m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[1m\"),\n\t\tdim: f(\"\\x1b[2m\", \"\\x1b[22m\", \"\\x1b[22m\\x1b[2m\"),\n\t\titalic: f(\"\\x1b[3m\", \"\\x1b[23m\"),\n\t\tunderline: f(\"\\x1b[4m\", \"\\x1b[24m\"),\n\t\tinverse: f(\"\\x1b[7m\", \"\\x1b[27m\"),\n\t\thidden: f(\"\\x1b[8m\", \"\\x1b[28m\"),\n\t\tstrikethrough: f(\"\\x1b[9m\", \"\\x1b[29m\"),\n\n\t\tblack: f(\"\\x1b[30m\", \"\\x1b[39m\"),\n\t\tred: f(\"\\x1b[31m\", \"\\x1b[39m\"),\n\t\tgreen: f(\"\\x1b[32m\", \"\\x1b[39m\"),\n\t\tyellow: f(\"\\x1b[33m\", \"\\x1b[39m\"),\n\t\tblue: f(\"\\x1b[34m\", \"\\x1b[39m\"),\n\t\tmagenta: f(\"\\x1b[35m\", \"\\x1b[39m\"),\n\t\tcyan: f(\"\\x1b[36m\", \"\\x1b[39m\"),\n\t\twhite: f(\"\\x1b[37m\", \"\\x1b[39m\"),\n\t\tgray: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\n\t\tbgBlack: f(\"\\x1b[40m\", \"\\x1b[49m\"),\n\t\tbgRed: f(\"\\x1b[41m\", \"\\x1b[49m\"),\n\t\tbgGreen: f(\"\\x1b[42m\", \"\\x1b[49m\"),\n\t\tbgYellow: f(\"\\x1b[43m\", \"\\x1b[49m\"),\n\t\tbgBlue: f(\"\\x1b[44m\", \"\\x1b[49m\"),\n\t\tbgMagenta: f(\"\\x1b[45m\", \"\\x1b[49m\"),\n\t\tbgCyan: f(\"\\x1b[46m\", \"\\x1b[49m\"),\n\t\tbgWhite: f(\"\\x1b[47m\", \"\\x1b[49m\"),\n\n\t\tblackBright: f(\"\\x1b[90m\", \"\\x1b[39m\"),\n\t\tredBright: f(\"\\x1b[91m\", \"\\x1b[39m\"),\n\t\tgreenBright: f(\"\\x1b[92m\", \"\\x1b[39m\"),\n\t\tyellowBright: f(\"\\x1b[93m\", \"\\x1b[39m\"),\n\t\tblueBright: f(\"\\x1b[94m\", \"\\x1b[39m\"),\n\t\tmagentaBright: f(\"\\x1b[95m\", \"\\x1b[39m\"),\n\t\tcyanBright: f(\"\\x1b[96m\", \"\\x1b[39m\"),\n\t\twhiteBright: f(\"\\x1b[97m\", \"\\x1b[39m\"),\n\n\t\tbgBlackBright: f(\"\\x1b[100m\", \"\\x1b[49m\"),\n\t\tbgRedBright: f(\"\\x1b[101m\", \"\\x1b[49m\"),\n\t\tbgGreenBright: f(\"\\x1b[102m\", \"\\x1b[49m\"),\n\t\tbgYellowBright: f(\"\\x1b[103m\", \"\\x1b[49m\"),\n\t\tbgBlueBright: f(\"\\x1b[104m\", \"\\x1b[49m\"),\n\t\tbgMagentaBright: f(\"\\x1b[105m\", \"\\x1b[49m\"),\n\t\tbgCyanBright: f(\"\\x1b[106m\", \"\\x1b[49m\"),\n\t\tbgWhiteBright: f(\"\\x1b[107m\", \"\\x1b[49m\"),\n\t}\n}\n\nmodule.exports = createColors()\nmodule.exports.createColors = createColors\n","export const CACHE_FOLDER_NAME = '.cache'\nexport const CACHE_FILE_NAME = 'token.ts'\nexport const CACHE_TOKEN_FILE_PATH = `${CACHE_FOLDER_NAME}/${CACHE_FILE_NAME}`\nexport const CUSTOM_RELEASE_PREFIX = 'custom'\nexport const CANCEL_PROCESS = 'Current operation canceled.'\n","import fs from 'node:fs'\nimport { cancel, isCancel } from '@clack/prompts'\nimport boxen from 'boxen'\nimport { createJiti } from 'jiti'\nimport { CANCEL_PROCESS } from '@/constant.ts'\n\nexport const checkDirExist = (dirPath: string) => {\n return fs.existsSync(dirPath)\n}\n\nexport const createDir = (dirPath: string) => {\n if (!checkDirExist(dirPath)) {\n fs.mkdirSync(dirPath)\n }\n}\n\nexport const printWarning = (message: string) =>\n console.log(boxen(message, {\n title: 'Warning',\n padding: 1,\n borderStyle: 'round',\n borderColor: 'yellow',\n }))\n\nexport const isCancelProcess = (value: unknown, message: string = CANCEL_PROCESS) => {\n if (isCancel(value)) {\n cancel(message)\n return process.exit(0)\n }\n}\n\nexport const loaderTs = async (path: string): Promise<string> => {\n const loader = createJiti(path)\n return await loader.import(path, { default: true })\n}\n","import type { IConfigOptions } from '@/types'\nimport { writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport { CACHE_FOLDER_NAME } from '@/constant.ts'\nimport { createDir, loaderTs } from '@/utils.ts'\n\nexport const setToken = async (config: IConfigOptions, token: string): Promise<void> => {\n createDir(resolve(config.cwd, CACHE_FOLDER_NAME))\n await writeFile(config.token.file, `export default \"${token}\"`)\n}\n\nexport const loaderToken = async (config: IConfigOptions): Promise<string> => {\n return await loaderTs(config.token.file)\n}\n","","import type { IConfigOptions, IPackage, IPackageContexts } from '@/types'\nimport { readFileSync } from 'node:fs'\nimport { resolve } from 'node:path'\nimport * as process from 'node:process'\nimport { findUp } from 'find-up'\nimport { glob } from 'glob'\nimport { parse } from 'yaml'\nimport { CACHE_TOKEN_FILE_PATH } from '@/constant.ts'\nimport { loaderToken } from '@/token.ts'\nimport { name } from '../package.json'\n\nconst CURRENT_PATH = resolve(import.meta.dirname, '../')\n\nconst defaultConfig: IConfigOptions = {\n root: '',\n cwd: '',\n token: {\n name: 'token.ts',\n file: resolve(CURRENT_PATH, `${CACHE_TOKEN_FILE_PATH}`),\n value: '',\n },\n release: '',\n currentVersion: '',\n monorepo: {\n is: false,\n workspacePath: '',\n packages: [],\n packageContexts: [],\n updatePackages: [],\n },\n packages: '',\n}\n\nconst collectPackageFiles = async (config: IConfigOptions, packages: string[]) => {\n const files = ['package.json']\n files.push(...await glob(packages, {\n cwd: config.cwd,\n ignore: ['**/node_modules/**'],\n }))\n\n return [...files]\n}\n\nexport const isMonorepo = async (\n config: IConfigOptions,\n): Promise<IConfigOptions['monorepo']> => {\n const workspacePath = await findUp('pnpm-workspace.yaml', {\n cwd: config.cwd,\n }) as string\n\n if (!workspacePath) {\n return {\n is: false,\n workspacePath: '',\n packageContexts: [],\n packages: [],\n }\n }\n\n const workspaceYaml = workspacePath ? parse(readFileSync(workspacePath, 'utf-8')) : { packages: [] }\n\n const is = !!workspaceYaml?.packages?.length || false\n\n const { packages: workSpacePackages } = parse(readFileSync(workspacePath, 'utf-8'))\n\n let packages = []\n let packageContexts: IPackageContexts[] = []\n if (workSpacePackages) {\n packages = workSpacePackages.map(\n (item: string) =>\n item.indexOf('*')\n ? `${item.replace('/*', '')}/**/package.json`\n : `${item}/**/package.json`,\n )\n\n const packageFiles = await collectPackageFiles(config, packages)\n packageContexts = packageFiles.map((file) => {\n const files = JSON.parse(readFileSync(resolve(config.cwd, file), 'utf-8')) as IPackage\n\n return {\n name: `${files.name}`,\n file,\n version: files?.version || '',\n context: files,\n }\n }) as IPackageContexts[]\n }\n\n return {\n is,\n workspacePath,\n packageContexts,\n packages,\n }\n}\n\nexport const resolveConfig = async (): Promise<IConfigOptions> => {\n const { loadConfig } = await import('c12')\n\n const config = await loadConfig<IConfigOptions>({\n name,\n defaultConfig,\n }).then(r => ({\n ...r.config,\n cwd: process.cwd(),\n root: CURRENT_PATH,\n }))\n\n config.token.value = await loaderToken(config) || ''\n\n config.monorepo = await isMonorepo(config)\n\n config.packages = resolve(config.cwd, 'package.json')\n\n return config\n}\n","import type { IConfigOptions } from '@/types'\nimport { x } from 'tinyexec'\n\nexport const gitCommit = async (config: IConfigOptions) => {\n const args = []\n\n args.push('--message', `release: v${config.release}`)\n\n args.push('--allow-empty')\n\n // if (typeof config.packages === 'object') {\n // args.push(config.packages.map(r => basename(r)).join(' '))\n // }\n // else {\n args.push(config.packages)\n // }\n\n await x('git', ['commit', ...args], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitTags = async (config: IConfigOptions) => {\n await x('git', [\n 'tag',\n '--annotate',\n '--message',\n '',\n `v${config.release}`,\n ], {\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n\nexport const gitPush = async (config: IConfigOptions) => {\n await x('git', ['push', '--tags'], {\n throwOnError: true,\n nodeOptions: {\n cwd: config.cwd,\n stdio: 'pipe',\n },\n })\n}\n","import type { IConfigOptions } from '@/types'\nimport { x } from 'tinyexec'\n\nexport const runCommand = async (config: IConfigOptions, command: string, args: string[]) => {\n await x(command, args, {\n nodeOptions: {\n stdio: 'inherit',\n cwd: config.cwd,\n },\n })\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\n\nconst JSON_SPACING = 2\n\nconst updatePackageJson = async (path: string, version: string) => {\n const updatePackage = JSON.parse(await readFile(path, 'utf-8'))\n updatePackage.version = version\n await writeFile(path, JSON.stringify(updatePackage, null, JSON_SPACING))\n}\n\nexport const updateFiles = async (config: IConfigOptions) => {\n if (config.monorepo.is) {\n for (const pkg of config.monorepo.updatePackages!) {\n await updatePackageJson(pkg.path, pkg.newVersion)\n }\n }\n else {\n await updatePackageJson(config.packages, config.release)\n }\n}\n","import type { IConfigOptions } from '@/types'\nimport { readFile } from 'node:fs/promises'\n\nexport const getCurrentVersion = async (config: IConfigOptions) => {\n const { packages } = config\n\n if (typeof packages === 'object') {\n // TODO load monorepo package version\n }\n else {\n const manifest = JSON.parse(await readFile(packages, {\n encoding: 'utf-8',\n })) as {\n version?: string\n }\n\n config.currentVersion = manifest.version || ''\n }\n}\n","import type { releaseType, ReleaseTypes } from '@/release-type.ts'\nimport type { IConfigOptions, IUpdatePackages } from '@/types'\nimport { cancel, isCancel, select, text } from '@clack/prompts'\nimport pc from 'picocolors'\nimport semver from 'semver'\nimport { CUSTOM_RELEASE_PREFIX } from '@/constant.ts'\nimport { isCancelProcess } from '@/utils.ts'\n\n// https://semver.org/\n\nconst PADDING = 13\nexport const validateVersion = (version: string) => !!semver.valid(version)\n\ninterface UIStyle {\n label: string\n color: (t: string) => string\n}\n\nconst DEFAULT_STYLE: UIStyle = { label: 'next', color: pc.cyan }\n\nconst UI_STYLE_MAP: Record<string, UIStyle> = {\n major: { label: 'major', color: pc.cyan },\n minor: { label: 'minor', color: pc.cyan },\n patch: { label: 'patch', color: pc.cyan },\n next: { label: 'next', color: pc.cyan },\n rc: { label: 'rc', color: pc.green },\n beta: { label: 'pre-beta', color: pc.magenta },\n alpha: { label: 'alpha', color: pc.yellow },\n}\n\n// --- 工具函数 ---\n\n/**\n * 核心逻辑:增量处理预发布版本\n * 解决 TS2345: 使用 readonly 修饰符接受 semver 的返回类型\n */\nconst processIncrementalPre = (preParts: readonly (string | number)[], base: string, prefix: string, expectedLen: number, fallback: string): string => {\n if (preParts[0] !== prefix) {\n return `${base}-${fallback}`\n }\n\n const newPre = [...preParts].slice(0, expectedLen)\n while (newPre.length < expectedLen) {\n newPre.push(0)\n }\n\n const lastIdx = expectedLen - 1\n const lastVal = newPre[lastIdx]\n const numericVal = typeof lastVal === 'number' ? lastVal : Number.parseInt(String(lastVal), 10)\n\n const isExtension = preParts.length < expectedLen\n // 逻辑:如果是补位产生的 0,则起始为 1;如果是已有的数字,则递增\n newPre[lastIdx] = isExtension ? 1 : (Number.isNaN(numericVal) ? 1 : numericVal + 1)\n\n return `${base}-${newPre.join('.')}`\n}\n\nexport const getNextVersions = (version: string): ReleaseTypes => {\n const s = semver.parse(version)\n if (!s)\n throw new Error(`[Invalid SemVer]: ${version}`)\n\n const { major: M, minor: m, patch: p, prerelease: pre } = s\n const base = `${M}.${m}.${p}`\n\n return {\n 'major': `${M + 1}.0.0`,\n 'minor': `${M}.${m + 1}.0`,\n 'patch': `${M}.${m}.${p + 1}`,\n 'next': `${M}.${m}.${p + 1}`,\n 'rc': processIncrementalPre(pre, base, 'rc', 2, 'rc.1'),\n 'beta-major': processIncrementalPre(pre, base, 'beta', 2, 'beta.1'),\n 'beta-minor': processIncrementalPre(pre, base, 'beta', 3, 'beta.0.1'),\n 'beta-patch': processIncrementalPre(pre, base, 'beta', 4, 'beta.0.0.1'),\n 'pre-beta': `${base}-beta`,\n 'alpha-beta': `${base}-alpha.beta`,\n 'alpha-major': processIncrementalPre(pre, base, 'alpha', 2, 'alpha.1'),\n 'alpha-minor': processIncrementalPre(pre, base, 'alpha', 3, 'alpha.0.1'),\n 'alpha-patch': processIncrementalPre(pre, base, 'alpha', 4, 'alpha.0.0.1'),\n }\n}\n\nexport async function promptForNewVersion(config: IConfigOptions): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg: IUpdatePackages, index: number): Promise<string | void>\nexport async function promptForNewVersion(config: IConfigOptions, pkg?: IUpdatePackages, index?: number): Promise<string | void> {\n const version = config.monorepo.is && pkg !== undefined ? pkg.newVersion : config.currentVersion\n\n const next = getNextVersions(version)\n\n // 动态生成选项\n const options = (Object.keys(next) as releaseType[]).map((key) => {\n const versionStr = next[key]\n\n // 1. 获取前缀(如 'alpha')\n const prefix = key.split('-')[0] ?? 'next'\n\n // 2. 彻底解决 TS18048: 即使 prefix 在 Map 里,TS 仍认为可能返回 undefined\n // 使用空值合并运算符 (??) 确保 style 永远是 UIStyle 类型\n const style = UI_STYLE_MAP[prefix] ?? DEFAULT_STYLE\n\n const label = style.label.padStart(PADDING, ' ')\n\n // 渲染版本颜色,同样处理关键字匹配的安全性\n const coloredVersion = versionStr.replace(/(rc|beta|alpha)/g, (match) => {\n const matchStyle = UI_STYLE_MAP[match] ?? DEFAULT_STYLE\n return matchStyle.color(match)\n })\n\n return {\n value: key as string,\n label: `${label} ${coloredVersion}`,\n }\n })\n\n options.push({\n value: CUSTOM_RELEASE_PREFIX,\n label: `${'custom'.padStart(PADDING, ' ')} ...`,\n })\n\n const release = await select({\n message: `Current version ${pc.bold(version)}`,\n options,\n initialValue: 'next',\n }) as releaseType | 'custom'\n\n isCancelProcess(release)\n\n let finalVersion: string\n\n if (release === CUSTOM_RELEASE_PREFIX) {\n const custom = await text({\n message: 'Enter the new version number',\n validate: val => !validateVersion(val) ? 'Invalid semver' : undefined,\n }) as string\n\n if (isCancel(custom)) {\n cancel('No version entered')\n return process.exit(0)\n }\n finalVersion = custom\n }\n else {\n // 这里的 release 已经排除了 CUSTOM 且必定属于 releaseType\n finalVersion = next[release]\n }\n\n if (\n config.monorepo.is\n && pkg !== undefined\n && index !== undefined\n && Array.isArray(config.monorepo.updatePackages)\n ) {\n config.monorepo.updatePackages[index]!.newVersion = finalVersion\n }\n else {\n config.release = finalVersion\n }\n}\n","import type { IConfigOptions, IPackageContexts, IUpdatePackages } from '@/types'\nimport { readFile, writeFile } from 'node:fs/promises'\nimport { resolve } from 'node:path'\nimport process from 'node:process'\nimport { confirm, intro, outro, select } from '@clack/prompts'\nimport { findUp } from 'find-up'\nimport pc from 'picocolors'\nimport { resolveConfig } from '@/config.ts'\nimport { CANCEL_PROCESS } from '@/constant.ts'\nimport { gitCommit, gitTags } from '@/git.ts'\nimport { runCommand } from '@/runCommand.ts'\nimport { updateFiles } from '@/update-files.ts'\nimport { isCancelProcess, loaderTs } from '@/utils.ts'\nimport { getCurrentVersion } from '@/version/current.ts'\nimport { promptForNewVersion } from '@/version/new.version.ts'\nimport { version } from '../../package.json'\n\n/**\n * 创建包选择选项\n */\nconst createPackageOptions = (packageContexts: IPackageContexts[]) => {\n return packageContexts.map((file) => {\n return {\n value: file.name,\n label: file.name,\n hint: `${pc.red(file.version)} - ${file.file}`,\n }\n })\n}\n\n/**\n * 处理单个包的选择流程\n */\nconst processPackageSelection = async (\n config: IConfigOptions,\n selectedPackageName: string,\n packageContexts: IPackageContexts[],\n): Promise<void> => {\n const selectedPackage = packageContexts.find(opt => opt.name === selectedPackageName) as IPackageContexts\n\n const resolvePackage: IUpdatePackages = {\n name: selectedPackageName,\n path: resolve(config.cwd, selectedPackage.file),\n currentVersion: selectedPackage.version,\n newVersion: selectedPackage.version,\n };\n\n (config.monorepo.updatePackages ??= []).push(resolvePackage)\n\n await promptForNewVersion(config, resolvePackage, config.monorepo.updatePackages.length - 1)\n}\n\n/**\n * 处理 monorepo 包的选择逻辑\n */\nconst handleMonorepoPackageSelection = async (config: IConfigOptions): Promise<void> => {\n const options = createPackageOptions(config.monorepo.packageContexts)\n let availableOptions = [...options]\n\n while (availableOptions.length > 0) {\n const selectedPackage = await select({\n message: '请选择要升级版本的包:',\n options: availableOptions,\n }) as string\n\n isCancelProcess(selectedPackage)\n\n await processPackageSelection(config, selectedPackage, config.monorepo.packageContexts)\n\n // 从可用选项中移除已选择的包\n availableOptions = availableOptions.filter(opt => opt.value !== selectedPackage)\n\n if (availableOptions.length > 0) {\n const continueSelection = await confirm({\n message: '是否继续选择其他包?',\n initialValue: true,\n })\n isCancelProcess(continueSelection)\n\n if (!continueSelection) {\n break\n }\n }\n }\n}\n\n/**\n * 获取缓存文件路径\n */\nconst getCachePath = async (cwd: string): Promise<string | null> => {\n const path = await findUp('node_modules/.cache/dnmp.ts', {\n cwd,\n })\n return path || null\n}\n\n/**\n * 读取或设置统一更新版本选项\n */\nconst getOrUpdateAllUpdateVersion = async (config: IConfigOptions): Promise<boolean> => {\n const cachePath = await getCachePath(config.cwd)\n\n if (cachePath) {\n return Boolean(await loaderTs(cachePath))\n }\n\n const allUpdateVersion = await confirm({\n message: '是否以根 package.json 为主版本统一更新 workspace 所有版本',\n initialValue: true,\n }) as boolean\n\n isCancelProcess(allUpdateVersion, CANCEL_PROCESS)\n\n const cacheFilePath = resolve(config.cwd, './node_modules/.cache/dnmp.ts')\n await writeFile(cacheFilePath, `export default ${allUpdateVersion}`)\n\n return allUpdateVersion\n}\n\n/**\n * 读取包文件内容\n */\nconst readPackageFile = async (filePath: string): Promise<{ version: string }> => {\n return JSON.parse(await readFile(filePath, 'utf-8')) as { version: string }\n}\n\n/**\n * 统一更新所有包的版本\n */\nconst updateAllPackagesVersion = async (config: IConfigOptions): Promise<void> => {\n const pkg = await readPackageFile(config.packages)\n config.currentVersion = pkg.version\n\n await promptForNewVersion(config)\n\n for (const item of config.monorepo.packageContexts) {\n const resolvePkgPath = resolve(config.cwd, item.file)\n const packageInfo = await readPackageFile(resolvePkgPath);\n\n (config.monorepo.updatePackages ??= []).push({\n name: item.name,\n path: resolvePkgPath,\n currentVersion: packageInfo.version,\n newVersion: config.release,\n })\n }\n}\n\nexport const bumpVersion = async () => {\n const config = await resolveConfig()\n\n intro(pc.bgCyan(` dnmp ${version} `))\n\n if (!config.token.value) {\n outro('请先设置 release token')\n return process.exit(0)\n }\n\n if (config.monorepo.is) {\n const allUpdateVersion = await getOrUpdateAllUpdateVersion(config)\n\n if (allUpdateVersion) {\n await updateAllPackagesVersion(config)\n }\n else {\n await handleMonorepoPackageSelection(config)\n }\n }\n else {\n await getCurrentVersion(config)\n await promptForNewVersion(config)\n }\n\n const isConfirmUpdate = await confirm({\n message: '是否确认更新 package.json ?',\n initialValue: true,\n })\n\n isCancelProcess(isConfirmUpdate)\n\n if (!isConfirmUpdate) {\n outro('用户取消操作,后续进程停止')\n return process.exit(0)\n }\n\n await updateFiles(config)\n\n await gitCommit(config)\n await gitTags(config)\n\n await runCommand(config, 'npm', [\n 'publish',\n `--//registry.npmjs.org/:_authToken=${config.token.value}`,\n '--access',\n 'public',\n ])\n\n outro('Done.')\n}\n","import process from 'node:process'\nimport { resolveConfig } from '@/config.ts'\nimport { setToken } from '@/token.ts'\nimport { printWarning } from '@/utils.ts'\n\nexport const token = async (token: string = '') => {\n try {\n const config = await resolveConfig()\n await setToken(config, token)\n }\n catch (error: any) {\n printWarning(error.message)\n process.exit(0)\n }\n}\n","import * as process from 'node:process'\nimport cac from 'cac'\nimport { bumpVersion } from '@/command/bump.ts'\nimport { token as setToken } from '@/command/token.ts'\nimport { printWarning } from '@/utils.ts'\nimport { name, version } from '../package.json'\n\nconst cli = cac(name)\n\n// TODO 完成主目录下的 package.json 版本发布\n// TODO 完成 monorepo 相关版本,多选版本发布\n\ncli.command('')\n .action(async (options) => {\n await bumpVersion()\n })\n\ncli.command('set <token>', 'Set the local release Token')\n .action(async (token: string = '') => {\n await setToken(token)\n })\n\ncli.help()\ncli.version(version)\n\ntry {\n cli.parse()\n}\ncatch (error: any) {\n printWarning(error.message)\n process.exit(0)\n}\n"],"x_google_ignoreList":[0],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "dnmp",
3
3
  "type": "module",
4
- "version": "0.0.0-alpha.0.3",
4
+ "version": "0.0.0-alpha.0.4",
5
5
  "packageManager": "pnpm@10.15.1",
6
6
  "description": "Interactive CLI that bumps your version numbers and more",
7
7
  "author": "lonewolfyx <olddrivero.king@qq.com>",