zixulu 1.13.2 → 1.13.3
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/index.js +9 -7
- package/dist/index.js.map +2 -2
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.js +13 -9
- package/dist/utils/index.js.map +3 -3
- package/package.json +41 -41
- package/src/index.ts +12 -13
- package/src/utils/index.ts +10 -9
package/dist/index.js
CHANGED
|
@@ -193,7 +193,7 @@ program.command("upgrade").description("升级所有依赖").action(async () =>
|
|
|
193
193
|
type: "list",
|
|
194
194
|
name: "level",
|
|
195
195
|
message: "请选择升级的级别",
|
|
196
|
-
choices: ["major", "minor", "patch"]
|
|
196
|
+
choices: ["latest", "major", "minor", "patch"]
|
|
197
197
|
});
|
|
198
198
|
for (const type of types) {
|
|
199
199
|
const upgrades = [];
|
|
@@ -381,14 +381,18 @@ program.command("interface").description("将 interface 转换为 type").action(
|
|
|
381
381
|
const files = (0, import_utils.getFiles)(".", (path, stats) => (path.ext === ".tsx" || path.ext === ".ts") && !path.base.endsWith(".d.ts") && stats.isFile(), {
|
|
382
382
|
exclude: (path, stats) => stats.isDirectory() && path.base === "node_modules"
|
|
383
383
|
});
|
|
384
|
+
const { default: inquirer } = await import("inquirer");
|
|
385
|
+
const { ifContinue } = await inquirer.prompt({
|
|
386
|
+
type: "confirm",
|
|
387
|
+
name: "ifContinue",
|
|
388
|
+
message: "是否继续"
|
|
389
|
+
});
|
|
390
|
+
if (!ifContinue)
|
|
391
|
+
return;
|
|
384
392
|
const reg = /(export )?interface (.+?) {/gm;
|
|
385
393
|
const reg1 = /\bexport\b/;
|
|
386
394
|
const reg2 = /(\w+?) extends (.+)/;
|
|
387
395
|
const modifiedFiles = /* @__PURE__ */ new Set();
|
|
388
|
-
import_consola.default.start("格式化代码");
|
|
389
|
-
await (0, import_utils.addPrettierConfig)();
|
|
390
|
-
await (0, import_utils.spawnAsync)("yarn");
|
|
391
|
-
await (0, import_utils.spawnAsync)("npx prettier --write ./src");
|
|
392
396
|
for (const file of files) {
|
|
393
397
|
const code = await (0, import_promises.readFile)(file, "utf-8");
|
|
394
398
|
const newCode = code.replace(reg, (match) => {
|
|
@@ -409,8 +413,6 @@ program.command("interface").description("将 interface 转换为 type").action(
|
|
|
409
413
|
import_consola.default.success(`以下文件中的 interface 已经转换为 type:
|
|
410
414
|
|
|
411
415
|
${Array.from(modifiedFiles).join("\n")}`);
|
|
412
|
-
import_consola.default.start("格式化代码");
|
|
413
|
-
await (0, import_utils.spawnAsync)("npx prettier --write ./src");
|
|
414
416
|
import_consola.default.start("检查项目是否存在 TypeScript 错误");
|
|
415
417
|
await (0, import_utils.spawnAsync)("npx tsc --noEmit");
|
|
416
418
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../src/index.ts"],
|
|
4
|
-
"sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { Argument, Command } from \"commander\"\r\nimport consola from \"consola\"\r\nimport { readFile, writeFile } from \"fs/promises\"\r\nimport { resolve } from \"path\"\r\nimport { Manager, Registry } from \"./constant\"\r\nimport { Module, ModuleResolution, Target, addDependencies, addLatestDependencies, addPrettierConfig, getFiles, getPackageUpgradeVersion, getTypeInGenerics, getVersionFromRequiredVersion, install, readPackageJson, removeComment, removeESLint, setTsConfig, sortArrayOrObject, spawnAsync, splitExtendsType, tailwind, vite, writePackageJson } from \"./utils\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJson(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram.command(\"eslint\").description(\"删除 ESLint 配置文件\").action(removeESLint)\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置文件\")\r\n .action(async () => {\r\n await addPrettierConfig()\r\n await install()\r\n })\r\n\r\nprogram.command(\"vite\").description(\"删除 vite 模板中的某些配置\").action(vite)\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置文件\")\r\n .action(async () => {\r\n await tailwind()\r\n await install()\r\n })\r\n\r\nprogram.command(\"remove-comment\").description(\"删除所有注释\").addArgument(new Argument(\"path\")).action(removeComment)\r\n\r\nprogram\r\n .command(\"ts-target\")\r\n .description(\"设置 tsconfig 中 target 字段\")\r\n .action(async () => {\r\n const target = await consola.prompt(\"Please choose a target\", {\r\n type: \"select\",\r\n options: Object.values(Target),\r\n initial: Target.ESNext\r\n })\r\n setTsConfig(\"target\", target)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const module = await consola.prompt(\"Please choose a module\", {\r\n type: \"select\",\r\n options: Object.values(Module),\r\n initial: Module.ESNext\r\n })\r\n setTsConfig(\"module\", module)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module-resolution\")\r\n .alias(\"ts-mr\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const moduleResolution = await consola.prompt(\"Please choose a module resolution\", {\r\n type: \"select\",\r\n options: Object.values(ModuleResolution),\r\n initial: ModuleResolution.NodeNext\r\n })\r\n setTsConfig(\"moduleResolution\", moduleResolution)\r\n })\r\n\r\ninterface NpmPackage {\r\n name: string\r\n description: string\r\n}\r\n\r\nconst packages: NpmPackage[] = [\r\n {\r\n name: \"deepsea-tools\",\r\n description: \"格数工具库\"\r\n },\r\n {\r\n name: \"deepsea-components\",\r\n description: \"格数组件库\"\r\n },\r\n {\r\n name: \"react-soda\",\r\n description: \"简单的状态管理库\"\r\n },\r\n {\r\n name: \"type-request\",\r\n description: \"基于 TypeScript 和 fetch 的类型请求库\"\r\n },\r\n {\r\n name: \"use-abort-signal\",\r\n description: \"在 useEffect 中安全地取消 fetch 请求\"\r\n },\r\n {\r\n name: \"react-viewer-soda\",\r\n description: \"基于 viewerjs 的图片预览组件\"\r\n },\r\n {\r\n name: \"viewerjs-soda\",\r\n description: \"基于 viewerjs 的图片预览库\"\r\n }\r\n]\r\n\r\nprogram\r\n .command(\"npm\")\r\n .description(\"一键添加 npm 包\")\r\n .action(async () => {\r\n const packageNames = (await consola.prompt(\"请选择需要安装的包\", {\r\n type: \"multiselect\",\r\n options: packages.map(pkg => ({ label: pkg.name, value: pkg.name, hint: pkg.description }))\r\n })) as unknown as string[]\r\n const latest = await consola.prompt(\"是否安装最新版本\", {\r\n type: \"confirm\",\r\n initial: true\r\n })\r\n const packageJson = readPackageJson()\r\n for (const pkg of packageNames) {\r\n await (latest ? addLatestDependencies : addDependencies)(packageJson, pkg)\r\n }\r\n writePackageJson(packageJson)\r\n install()\r\n })\r\n\r\nprogram\r\n .command(\"father\")\r\n .description(\"修改 father 项目配置\")\r\n .action(async () => {\r\n let packageJson = readPackageJson()\r\n packageJson.publishConfig ??= {}\r\n packageJson.publishConfig.access = \"public\"\r\n packageJson.publishConfig.registry = \"https://registry.npmjs.org/\"\r\n packageJson.publishConfig = sortArrayOrObject(packageJson.publishConfig)\r\n packageJson.files ??= []\r\n if (!packageJson.files.includes(\"src\")) packageJson.files.push(\"src\")\r\n packageJson.files = sortArrayOrObject(packageJson.files)\r\n const dependencies = packageJson.dependencies\r\n const devDependencies = packageJson.devDependencies\r\n const peerDependencies = packageJson.peerDependencies\r\n if (packageJson.repository?.url && !packageJson.repository.url.startsWith(\"git+\")) packageJson.repository.url = `git+${packageJson.repository.url}.git`\r\n packageJson.repository ??= {}\r\n packageJson.repository.type ??= \"git\"\r\n packageJson.repository.url ??= `git+https://github.com/1adybug/${packageJson.name}.git`\r\n if (!packageJson.types) {\r\n packageJson = Object.entries(packageJson).reduce((prev: Record<string, any>, [key, value]) => {\r\n prev[key] = value\r\n if (Object.hasOwn(packageJson, \"module\")) {\r\n if (key === \"module\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n } else if (Object.hasOwn(packageJson, \"main\")) {\r\n if (key === \"main\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n }\r\n return prev\r\n }, {})\r\n }\r\n delete packageJson.dependencies\r\n delete packageJson.devDependencies\r\n delete packageJson.peerDependencies\r\n packageJson.dependencies = sortArrayOrObject(dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(peerDependencies)\r\n const fatherrcCode = `import { defineConfig } from \"father\"\r\n\r\nexport default defineConfig({\r\n esm: {},\r\n cjs: {},\r\n targets: {\r\n node: 18,\r\n chrome: 100\r\n },\r\n sourcemap: true\r\n})\r\n`\r\n const gitignore = (await readFile(\".gitignore\", \"utf-8\"))\r\n .split(\"\\n\")\r\n .map(line => line.trim())\r\n .filter(Boolean)\r\n if (!gitignore.some(line => /^\\/?dist$/.test(line))) gitignore.push(\"dist\")\r\n if (!gitignore.some(line => /^\\/?yarn\\.lock$/.test(line))) gitignore.push(\"yarn.lock\")\r\n if (!gitignore.some(line => /^\\/?pnpm-lock\\.yaml$/.test(line))) gitignore.push(\"pnpm-lock.yaml\")\r\n if (!gitignore.some(line => /^\\/?node_modules$/.test(line))) gitignore.push(\"node_modules\")\r\n if (!gitignore.some(line => /^\\/?package-lock\\.json$/.test(line))) gitignore.push(\"package-lock.json\")\r\n if (!gitignore.some(line => /^\\/?yarn-error\\.log$/.test(line))) gitignore.push(\"yarn-error.log\")\r\n writePackageJson(packageJson)\r\n await writeFile(\".fatherrc.ts\", fatherrcCode)\r\n await writeFile(\".gitignore\", gitignore.join(\"\\n\"))\r\n setTsConfig(\"target\", Target.ESNext)\r\n })\r\n\r\nprogram\r\n .command(\"upgrade\")\r\n .description(\"升级所有依赖\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const packageJson = readPackageJson()\r\n\r\n const { types } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"types\",\r\n message: \"请选择要升级的依赖类型\",\r\n choices: [\"dependencies\", \"devDependencies\"].filter(type => !!packageJson[type])\r\n })\r\n\r\n const { level } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"level\",\r\n message: \"请选择升级的级别\",\r\n choices: [\"major\", \"minor\", \"patch\"]\r\n })\r\n\r\n for (const type of types) {\r\n const upgrades: { package: string; oldVersion: string; newVersion: string; strVersion: string }[] = []\r\n const allPkgs = Object.keys(packageJson[type])\r\n\r\n for (let i = 0; i < allPkgs.length; i++) {\r\n const pkg = allPkgs[i]\r\n const rv = packageJson[type][pkg]\r\n const s = rv.match(/^\\D*/)![0]\r\n const cv = getVersionFromRequiredVersion(rv)\r\n const version = await getPackageUpgradeVersion(pkg, cv, level)\r\n if (!version) continue\r\n upgrades.push({ package: pkg, oldVersion: cv, newVersion: version, strVersion: `${s}${version}` })\r\n }\r\n\r\n if (upgrades.length === 0) continue\r\n\r\n const { pkgs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"pkgs\",\r\n message: \"请选择要升级的包\",\r\n choices: upgrades.map(upgrade => ({ name: `${upgrade.package} ${upgrade.oldVersion} => ${upgrade.newVersion}`, value: upgrade.package }))\r\n })\r\n\r\n pkgs.forEach((pkg: string) => {\r\n const upgrade = upgrades.find(upgrade => upgrade.package === pkg)!\r\n packageJson[type][pkg] = upgrade.strVersion\r\n })\r\n }\r\n\r\n writePackageJson(packageJson)\r\n\r\n install()\r\n })\r\n\r\nprogram\r\n .command(\"registry\")\r\n .description(\"设置 npm registry\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { manager } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"manager\",\r\n message: \"请选择包管理器\",\r\n choices: Object.keys(Manager)\r\n })\r\n\r\n const { registry } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"registry\",\r\n message: \"请选择要更换的源\",\r\n choices: Object.keys(Registry)\r\n })\r\n\r\n const command = `${manager} config set registry ${Registry[registry as keyof typeof Registry]}`\r\n await spawnAsync(command)\r\n })\r\n\r\nprogram\r\n .command(\"sort\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(() => {\r\n const packageJson = readPackageJson()\r\n packageJson.dependencies = sortArrayOrObject(packageJson.dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(packageJson.devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(packageJson.peerDependencies)\r\n packageJson.peerDevDependencies = sortArrayOrObject(packageJson.peerDevDependencies)\r\n writePackageJson(packageJson)\r\n })\r\n\r\ntype Choice = {\r\n value: string\r\n short: string\r\n name: string\r\n checked: boolean\r\n}\r\n\r\nprogram\r\n .command(\"experimental-arrow\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const files = getFiles(\"./src\", (path, stats) => path.ext === \".tsx\" && stats.isFile())\r\n const reg = /^(export )?const \\w+?: FC.+?$/gm\r\n const { auto } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"auto\",\r\n message: \"是否自动选择要转换的组件\"\r\n })\r\n\r\n const warnFiles: Set<string> = new Set()\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n if (auto) {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n code = code.replace(reg, match => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return match\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n } else {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n const matches = code.match(reg)\r\n if (!matches) continue\r\n consola.start(file)\r\n const choices = Array.from(matches).reduce((prev: Choice[], match, index) => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return prev\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const funName = match.match(/const (\\w+?):/)![1]\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}(props: ${type}) {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n } else {\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}() {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n }\r\n\r\n return prev\r\n }, [])\r\n\r\n const length = choices.length.toString().length\r\n\r\n choices.forEach((choice, index) => {\r\n let first = true\r\n choice.name = choice.name.replace(/◆/g, () => {\r\n if (first) {\r\n first = false\r\n return `◆ ${(index + 1).toString().padStart(length, \"0\")}.`\r\n }\r\n return \"\".padStart(length + 3, \" \")\r\n })\r\n })\r\n\r\n const { indexs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"indexs\",\r\n message: `total ${choices.length} component${choices.length > 1 ? \"s\" : \"\"}`,\r\n choices\r\n })\r\n\r\n let index = 0\r\n\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n\r\n code = code.replace(reg, match => {\r\n if (!indexs.includes(index.toString())) return match\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n\r\n console.log()\r\n\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的箭头函数组件已经转换为函数组件:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n if (warnFiles.size > 0) consola.warn(`以下文件中存在 memo 或 forwardRef,请手动转换:\\n\\n${Array.from(warnFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await addPrettierConfig()\r\n\r\n await spawnAsync(\"yarn\")\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram\r\n .command(\"interface\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n const files = getFiles(\".\", (path, stats) => (path.ext === \".tsx\" || path.ext === \".ts\") && !path.base.endsWith(\".d.ts\") && stats.isFile(), {\r\n exclude: (path, stats) => stats.isDirectory() && path.base === \"node_modules\"\r\n })\r\n\r\n const reg = /(export )?interface (.+?) {/gm\r\n const reg1 = /\\bexport\\b/\r\n const reg2 = /(\\w+?) extends (.+)/\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await addPrettierConfig()\r\n\r\n await spawnAsync(\"yarn\")\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n for (const file of files) {\r\n const code = await readFile(file, \"utf-8\")\r\n const newCode = code.replace(reg, match => {\r\n modifiedFiles.add(file)\r\n const hasExport = reg1.test(match)\r\n const $2 = match.replace(reg, \"$2\")\r\n const matches = $2.match(reg2)\r\n if (matches) {\r\n const name = matches[1]\r\n const extendsTypes = splitExtendsType(matches[2]).join(\" & \")\r\n\r\n return `${hasExport ? \"export \" : \"\"}type ${name} = ${extendsTypes} & {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}type ${$2} = {`\r\n })\r\n await writeFile(file, newCode, \"utf-8\")\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的 interface 已经转换为 type:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram.parse()\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { Argument, Command } from \"commander\"\r\nimport consola from \"consola\"\r\nimport { readFile, writeFile } from \"fs/promises\"\r\nimport { resolve } from \"path\"\r\nimport { Manager, Registry } from \"./constant\"\r\nimport { Module, ModuleResolution, Target, addDependencies, addLatestDependencies, addPrettierConfig, getFiles, getPackageUpgradeVersion, getTypeInGenerics, getVersionFromRequiredVersion, install, readPackageJson, removeComment, removeESLint, setTsConfig, sortArrayOrObject, spawnAsync, splitExtendsType, tailwind, vite, writePackageJson } from \"./utils\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJson(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram.command(\"eslint\").description(\"删除 ESLint 配置文件\").action(removeESLint)\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置文件\")\r\n .action(async () => {\r\n await addPrettierConfig()\r\n await install()\r\n })\r\n\r\nprogram.command(\"vite\").description(\"删除 vite 模板中的某些配置\").action(vite)\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置文件\")\r\n .action(async () => {\r\n await tailwind()\r\n await install()\r\n })\r\n\r\nprogram.command(\"remove-comment\").description(\"删除所有注释\").addArgument(new Argument(\"path\")).action(removeComment)\r\n\r\nprogram\r\n .command(\"ts-target\")\r\n .description(\"设置 tsconfig 中 target 字段\")\r\n .action(async () => {\r\n const target = await consola.prompt(\"Please choose a target\", {\r\n type: \"select\",\r\n options: Object.values(Target),\r\n initial: Target.ESNext\r\n })\r\n setTsConfig(\"target\", target)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const module = await consola.prompt(\"Please choose a module\", {\r\n type: \"select\",\r\n options: Object.values(Module),\r\n initial: Module.ESNext\r\n })\r\n setTsConfig(\"module\", module)\r\n })\r\n\r\nprogram\r\n .command(\"ts-module-resolution\")\r\n .alias(\"ts-mr\")\r\n .description(\"设置 tsconfig 中 module 字段\")\r\n .action(async () => {\r\n const moduleResolution = await consola.prompt(\"Please choose a module resolution\", {\r\n type: \"select\",\r\n options: Object.values(ModuleResolution),\r\n initial: ModuleResolution.NodeNext\r\n })\r\n setTsConfig(\"moduleResolution\", moduleResolution)\r\n })\r\n\r\ninterface NpmPackage {\r\n name: string\r\n description: string\r\n}\r\n\r\nconst packages: NpmPackage[] = [\r\n {\r\n name: \"deepsea-tools\",\r\n description: \"格数工具库\"\r\n },\r\n {\r\n name: \"deepsea-components\",\r\n description: \"格数组件库\"\r\n },\r\n {\r\n name: \"react-soda\",\r\n description: \"简单的状态管理库\"\r\n },\r\n {\r\n name: \"type-request\",\r\n description: \"基于 TypeScript 和 fetch 的类型请求库\"\r\n },\r\n {\r\n name: \"use-abort-signal\",\r\n description: \"在 useEffect 中安全地取消 fetch 请求\"\r\n },\r\n {\r\n name: \"react-viewer-soda\",\r\n description: \"基于 viewerjs 的图片预览组件\"\r\n },\r\n {\r\n name: \"viewerjs-soda\",\r\n description: \"基于 viewerjs 的图片预览库\"\r\n }\r\n]\r\n\r\nprogram\r\n .command(\"npm\")\r\n .description(\"一键添加 npm 包\")\r\n .action(async () => {\r\n const packageNames = (await consola.prompt(\"请选择需要安装的包\", {\r\n type: \"multiselect\",\r\n options: packages.map(pkg => ({ label: pkg.name, value: pkg.name, hint: pkg.description }))\r\n })) as unknown as string[]\r\n const latest = await consola.prompt(\"是否安装最新版本\", {\r\n type: \"confirm\",\r\n initial: true\r\n })\r\n const packageJson = readPackageJson()\r\n for (const pkg of packageNames) {\r\n await (latest ? addLatestDependencies : addDependencies)(packageJson, pkg)\r\n }\r\n writePackageJson(packageJson)\r\n install()\r\n })\r\n\r\nprogram\r\n .command(\"father\")\r\n .description(\"修改 father 项目配置\")\r\n .action(async () => {\r\n let packageJson = readPackageJson()\r\n packageJson.publishConfig ??= {}\r\n packageJson.publishConfig.access = \"public\"\r\n packageJson.publishConfig.registry = \"https://registry.npmjs.org/\"\r\n packageJson.publishConfig = sortArrayOrObject(packageJson.publishConfig)\r\n packageJson.files ??= []\r\n if (!packageJson.files.includes(\"src\")) packageJson.files.push(\"src\")\r\n packageJson.files = sortArrayOrObject(packageJson.files)\r\n const dependencies = packageJson.dependencies\r\n const devDependencies = packageJson.devDependencies\r\n const peerDependencies = packageJson.peerDependencies\r\n if (packageJson.repository?.url && !packageJson.repository.url.startsWith(\"git+\")) packageJson.repository.url = `git+${packageJson.repository.url}.git`\r\n packageJson.repository ??= {}\r\n packageJson.repository.type ??= \"git\"\r\n packageJson.repository.url ??= `git+https://github.com/1adybug/${packageJson.name}.git`\r\n if (!packageJson.types) {\r\n packageJson = Object.entries(packageJson).reduce((prev: Record<string, any>, [key, value]) => {\r\n prev[key] = value\r\n if (Object.hasOwn(packageJson, \"module\")) {\r\n if (key === \"module\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n } else if (Object.hasOwn(packageJson, \"main\")) {\r\n if (key === \"main\") prev.types = value.replace(/\\.js$/, \".d.ts\")\r\n }\r\n return prev\r\n }, {})\r\n }\r\n delete packageJson.dependencies\r\n delete packageJson.devDependencies\r\n delete packageJson.peerDependencies\r\n packageJson.dependencies = sortArrayOrObject(dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(peerDependencies)\r\n const fatherrcCode = `import { defineConfig } from \"father\"\r\n\r\nexport default defineConfig({\r\n esm: {},\r\n cjs: {},\r\n targets: {\r\n node: 18,\r\n chrome: 100\r\n },\r\n sourcemap: true\r\n})\r\n`\r\n const gitignore = (await readFile(\".gitignore\", \"utf-8\"))\r\n .split(\"\\n\")\r\n .map(line => line.trim())\r\n .filter(Boolean)\r\n if (!gitignore.some(line => /^\\/?dist$/.test(line))) gitignore.push(\"dist\")\r\n if (!gitignore.some(line => /^\\/?yarn\\.lock$/.test(line))) gitignore.push(\"yarn.lock\")\r\n if (!gitignore.some(line => /^\\/?pnpm-lock\\.yaml$/.test(line))) gitignore.push(\"pnpm-lock.yaml\")\r\n if (!gitignore.some(line => /^\\/?node_modules$/.test(line))) gitignore.push(\"node_modules\")\r\n if (!gitignore.some(line => /^\\/?package-lock\\.json$/.test(line))) gitignore.push(\"package-lock.json\")\r\n if (!gitignore.some(line => /^\\/?yarn-error\\.log$/.test(line))) gitignore.push(\"yarn-error.log\")\r\n writePackageJson(packageJson)\r\n await writeFile(\".fatherrc.ts\", fatherrcCode)\r\n await writeFile(\".gitignore\", gitignore.join(\"\\n\"))\r\n setTsConfig(\"target\", Target.ESNext)\r\n })\r\n\r\nprogram\r\n .command(\"upgrade\")\r\n .description(\"升级所有依赖\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const packageJson = readPackageJson()\r\n\r\n const { types } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"types\",\r\n message: \"请选择要升级的依赖类型\",\r\n choices: [\"dependencies\", \"devDependencies\"].filter(type => !!packageJson[type])\r\n })\r\n\r\n const { level } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"level\",\r\n message: \"请选择升级的级别\",\r\n choices: [\"latest\", \"major\", \"minor\", \"patch\"]\r\n })\r\n\r\n for (const type of types) {\r\n const upgrades: { package: string; oldVersion: string; newVersion: string; strVersion: string }[] = []\r\n const allPkgs = Object.keys(packageJson[type])\r\n\r\n for (let i = 0; i < allPkgs.length; i++) {\r\n const pkg = allPkgs[i]\r\n const rv = packageJson[type][pkg]\r\n const s = rv.match(/^\\D*/)![0]\r\n const cv = getVersionFromRequiredVersion(rv)\r\n const version = await getPackageUpgradeVersion(pkg, cv, level)\r\n if (!version) continue\r\n upgrades.push({ package: pkg, oldVersion: cv, newVersion: version, strVersion: `${s}${version}` })\r\n }\r\n\r\n if (upgrades.length === 0) continue\r\n\r\n const { pkgs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"pkgs\",\r\n message: \"请选择要升级的包\",\r\n choices: upgrades.map(upgrade => ({ name: `${upgrade.package} ${upgrade.oldVersion} => ${upgrade.newVersion}`, value: upgrade.package }))\r\n })\r\n\r\n pkgs.forEach((pkg: string) => {\r\n const upgrade = upgrades.find(upgrade => upgrade.package === pkg)!\r\n packageJson[type][pkg] = upgrade.strVersion\r\n })\r\n }\r\n\r\n writePackageJson(packageJson)\r\n\r\n install()\r\n })\r\n\r\nprogram\r\n .command(\"registry\")\r\n .description(\"设置 npm registry\")\r\n .action(async () => {\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { manager } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"manager\",\r\n message: \"请选择包管理器\",\r\n choices: Object.keys(Manager)\r\n })\r\n\r\n const { registry } = await inquirer.prompt({\r\n type: \"list\",\r\n name: \"registry\",\r\n message: \"请选择要更换的源\",\r\n choices: Object.keys(Registry)\r\n })\r\n\r\n const command = `${manager} config set registry ${Registry[registry as keyof typeof Registry]}`\r\n await spawnAsync(command)\r\n })\r\n\r\nprogram\r\n .command(\"sort\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(() => {\r\n const packageJson = readPackageJson()\r\n packageJson.dependencies = sortArrayOrObject(packageJson.dependencies)\r\n packageJson.devDependencies = sortArrayOrObject(packageJson.devDependencies)\r\n packageJson.peerDependencies = sortArrayOrObject(packageJson.peerDependencies)\r\n packageJson.peerDevDependencies = sortArrayOrObject(packageJson.peerDevDependencies)\r\n writePackageJson(packageJson)\r\n })\r\n\r\ntype Choice = {\r\n value: string\r\n short: string\r\n name: string\r\n checked: boolean\r\n}\r\n\r\nprogram\r\n .command(\"experimental-arrow\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n const files = getFiles(\"./src\", (path, stats) => path.ext === \".tsx\" && stats.isFile())\r\n const reg = /^(export )?const \\w+?: FC.+?$/gm\r\n const { auto } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"auto\",\r\n message: \"是否自动选择要转换的组件\"\r\n })\r\n\r\n const warnFiles: Set<string> = new Set()\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n if (auto) {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n code = code.replace(reg, match => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return match\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n } else {\r\n for (const file of files) {\r\n let code = await readFile(file, \"utf-8\")\r\n const matches = code.match(reg)\r\n if (!matches) continue\r\n consola.start(file)\r\n const choices = Array.from(matches).reduce((prev: Choice[], match, index) => {\r\n if (match.includes(\"memo(\") || match.includes(\"forwardRef(\")) {\r\n warnFiles.add(file)\r\n return prev\r\n }\r\n modifiedFiles.add(file)\r\n const hasExport = match.startsWith(\"export \")\r\n const funName = match.match(/const (\\w+?):/)![1]\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}(props: ${type}) {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n } else {\r\n const name = `◆ ${match}\r\n ◆ ${hasExport ? \"export \" : \"\"}function ${funName}() {`\r\n prev.push({ value: index.toString(), short: funName, name, checked: true })\r\n }\r\n\r\n return prev\r\n }, [])\r\n\r\n const length = choices.length.toString().length\r\n\r\n choices.forEach((choice, index) => {\r\n let first = true\r\n choice.name = choice.name.replace(/◆/g, () => {\r\n if (first) {\r\n first = false\r\n return `◆ ${(index + 1).toString().padStart(length, \"0\")}.`\r\n }\r\n return \"\".padStart(length + 3, \" \")\r\n })\r\n })\r\n\r\n const { indexs } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"indexs\",\r\n message: `total ${choices.length} component${choices.length > 1 ? \"s\" : \"\"}`,\r\n choices\r\n })\r\n\r\n let index = 0\r\n\r\n let exportDefaultReg: RegExp | undefined = undefined\r\n\r\n code = code.replace(reg, match => {\r\n if (!indexs.includes(index.toString())) return match\r\n const hasExport = match.startsWith(\"export \")\r\n const name = match.match(/const (\\w+?):/)![1]\r\n const edReg = new RegExp(`^export default ${name}$`, \"m\")\r\n let hasExportDefault = false\r\n if (!exportDefaultReg && !hasExport && edReg.test(code)) {\r\n exportDefaultReg = edReg\r\n hasExportDefault = true\r\n }\r\n const typeIndex = match.indexOf(\"FC<\")\r\n if (typeIndex > 0) {\r\n const type = getTypeInGenerics(match, typeIndex + 2)\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}(props: ${type}) {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}${hasExportDefault ? \"export default \" : \"\"}function ${name}() {`\r\n })\r\n\r\n if (exportDefaultReg) code = code.replace(exportDefaultReg, \"\")\r\n\r\n console.log()\r\n\r\n await writeFile(file, code, \"utf-8\")\r\n }\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的箭头函数组件已经转换为函数组件:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n if (warnFiles.size > 0) consola.warn(`以下文件中存在 memo 或 forwardRef,请手动转换:\\n\\n${Array.from(warnFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"格式化代码\")\r\n\r\n await addPrettierConfig()\r\n\r\n await spawnAsync(\"yarn\")\r\n\r\n await spawnAsync(\"npx prettier --write ./src\")\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram\r\n .command(\"interface\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(async () => {\r\n consola.warn(\"请在使用本功能前提交或备份代码\")\r\n\r\n const files = getFiles(\".\", (path, stats) => (path.ext === \".tsx\" || path.ext === \".ts\") && !path.base.endsWith(\".d.ts\") && stats.isFile(), {\r\n exclude: (path, stats) => stats.isDirectory() && path.base === \"node_modules\"\r\n })\r\n\r\n const { default: inquirer } = await import(\"inquirer\")\r\n\r\n const { ifContinue } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"ifContinue\",\r\n message: \"是否继续\"\r\n })\r\n\r\n if (!ifContinue) return\r\n\r\n const reg = /(export )?interface (.+?) {/gm\r\n const reg1 = /\\bexport\\b/\r\n const reg2 = /(\\w+?) extends (.+)/\r\n const modifiedFiles: Set<string> = new Set()\r\n\r\n for (const file of files) {\r\n const code = await readFile(file, \"utf-8\")\r\n const newCode = code.replace(reg, match => {\r\n modifiedFiles.add(file)\r\n const hasExport = reg1.test(match)\r\n const $2 = match.replace(reg, \"$2\")\r\n const matches = $2.match(reg2)\r\n if (matches) {\r\n const name = matches[1]\r\n const extendsTypes = splitExtendsType(matches[2]).join(\" & \")\r\n\r\n return `${hasExport ? \"export \" : \"\"}type ${name} = ${extendsTypes} & {`\r\n }\r\n return `${hasExport ? \"export \" : \"\"}type ${$2} = {`\r\n })\r\n await writeFile(file, newCode, \"utf-8\")\r\n }\r\n\r\n if (modifiedFiles.size > 0) consola.success(`以下文件中的 interface 已经转换为 type:\\n\\n${Array.from(modifiedFiles).join(\"\\n\")}`)\r\n\r\n consola.start(\"检查项目是否存在 TypeScript 错误\")\r\n\r\n await spawnAsync(\"npx tsc --noEmit\")\r\n })\r\n\r\nprogram.parse()\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["consola", "module", "pkg", "upgrade", "index"]
|
|
7
7
|
}
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -10,7 +10,7 @@ export declare function getPackageLatestVersion(packageName: string): Promise<st
|
|
|
10
10
|
export declare function getPackageVersions(packageName: string): Promise<string[]>;
|
|
11
11
|
export declare function getVersionFromRequiredVersion(requiredVersion: string): string;
|
|
12
12
|
export declare function getVersionNum(version: string): number[];
|
|
13
|
-
export declare function getPackageUpgradeVersion(packageName: string, version: string, level: "major" | "minor" | "patch"): Promise<string | undefined>;
|
|
13
|
+
export declare function getPackageUpgradeVersion(packageName: string, version: string, level: "latest" | "major" | "minor" | "patch"): Promise<string | undefined>;
|
|
14
14
|
/** 读取 package.json */
|
|
15
15
|
export declare function readPackageJson(path?: string): Record<string, any>;
|
|
16
16
|
/** 读取 tsconfig.json */
|
package/dist/utils/index.js
CHANGED
|
@@ -115,21 +115,25 @@ function getVersionNum(version) {
|
|
|
115
115
|
return nums;
|
|
116
116
|
}
|
|
117
117
|
async function getPackageUpgradeVersion(packageName, version, level) {
|
|
118
|
-
if (level === "
|
|
118
|
+
if (level === "latest") {
|
|
119
119
|
const latestVersion = await getPackageLatestVersion(packageName);
|
|
120
120
|
if (version === latestVersion)
|
|
121
121
|
return void 0;
|
|
122
122
|
return latestVersion;
|
|
123
123
|
}
|
|
124
|
-
const
|
|
124
|
+
const current = getVersionNum(version);
|
|
125
125
|
const versions = await getPackageVersions(packageName);
|
|
126
|
-
return versions.find((item
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
126
|
+
return versions.find((item) => {
|
|
127
|
+
const latest = getVersionNum(item);
|
|
128
|
+
const index = latest.findIndex((num, index2) => num > current[index2]);
|
|
129
|
+
if (index === -1)
|
|
130
|
+
return false;
|
|
131
|
+
if (level === "major")
|
|
132
|
+
return index >= 0;
|
|
133
|
+
if (level === "minor")
|
|
134
|
+
return index >= 1;
|
|
135
|
+
if (level === "patch")
|
|
136
|
+
return index >= 2;
|
|
133
137
|
});
|
|
134
138
|
}
|
|
135
139
|
function readPackageJson(path) {
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { spawn } from \"child_process\"\r\nimport consola from \"consola\"\r\nimport { Stats, readFileSync, readdirSync, statSync, unlinkSync, writeFileSync } from \"fs\"\r\nimport * as JSON5 from \"json5\"\r\nimport { ParsedPath, isAbsolute, join, parse } from \"path\"\r\nimport { Config } from \"prettier\"\r\nimport { cwd, exit } from \"process\"\r\n\r\nfunction getAbsolutePath(path: string) {\r\n return isAbsolute(path) ? path : join(cwd(), path)\r\n}\r\n\r\nexport function getPackageJsonPath(path?: string) {\r\n return join(getAbsolutePath(path ?? cwd()), \"package.json\")\r\n}\r\n\r\nexport function getTsConfigJsonPath(path?: string) {\r\n return join(getAbsolutePath(path ?? cwd()), \"tsconfig.json\")\r\n}\r\n\r\n/** 获取包的最新版本 */\r\nexport async function getPackageLatestVersion(packageName: string) {\r\n try {\r\n const url = `https://registry.npmjs.org/${packageName}/latest`\r\n const response = await fetch(url)\r\n const data = await response.json()\r\n return data.version as string\r\n } catch (error) {\r\n consola.fail(`获取 ${packageName} 最新版本号失败`)\r\n exit()\r\n }\r\n}\r\n\r\nexport async function getPackageVersions(packageName: string) {\r\n try {\r\n const url = `https://registry.npmjs.org/${packageName}`\r\n const response = await fetch(url)\r\n const data = await response.json()\r\n return Object.keys(data.versions) as string[]\r\n } catch (error) {\r\n consola.fail(`获取 ${packageName} 版本号失败`)\r\n exit()\r\n }\r\n}\r\n\r\nexport function getVersionFromRequiredVersion(requiredVersion: string) {\r\n return requiredVersion.replace(/^\\D*/, \"\")\r\n}\r\n\r\nexport function getVersionNum(version: string) {\r\n const nums = version.split(\".\").map(Number)\r\n if (nums.some(num => !Number.isInteger(num) || num < 0) || nums.length < 3) {\r\n consola.fail(`无效的版本号 ${version}`)\r\n exit()\r\n }\r\n return nums\r\n}\r\n\r\nexport async function getPackageUpgradeVersion(packageName: string, version: string, level: \"major\" | \"minor\" | \"patch\") {\r\n if (level === \"major\") {\r\n const latestVersion = await getPackageLatestVersion(packageName)\r\n if (version === latestVersion) return undefined\r\n return latestVersion\r\n }\r\n const [major, minor, patch] = getVersionNum(version)\r\n const versions = await getPackageVersions(packageName)\r\n return versions.find((item, index) => {\r\n const [a, b, c] = getVersionNum(item)\r\n if (index === 0) {\r\n if ((a > major && level === \"minor\") || (a >= major && b > minor && level === \"patch\")) consola.log(`发现 ${packageName} 的新版本 ${item}`)\r\n }\r\n return (level === \"minor\" && a === major && b > minor) || (level === \"patch\" && a === major && b === minor && c > patch)\r\n })\r\n}\r\n\r\n/** 读取 package.json */\r\nexport function readPackageJson(path?: string): Record<string, any> {\r\n try {\r\n const result = JSON.parse(readFileSync(getPackageJsonPath(path), \"utf-8\"))\r\n return result\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"读取 package.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\n/** 读取 tsconfig.json */\r\nexport function readTsConfigJSON(path?: string): Record<string, any> {\r\n try {\r\n const result = JSON5.parse(readFileSync(getTsConfigJsonPath(path), \"utf-8\"))\r\n return result\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"读取 tsconfig.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入依赖 */\r\nexport async function addDependencies(packageJson: Record<string, any>, packageName: string, version?: string) {\r\n try {\r\n packageJson.dependencies ??= {}\r\n packageJson.dependencies[packageName] ??= version?.trim() || `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.dependencies)\r\n keys.sort()\r\n const sortedDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDependencies[key] = packageJson.dependencies[key]\r\n }\r\n packageJson.dependencies = sortedDependencies\r\n consola.success(`添加 ${packageName} 至依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入最新依赖 */\r\nexport async function addLatestDependencies(packageJson: Record<string, any>, packageName: string) {\r\n try {\r\n packageJson.dependencies ??= {}\r\n packageJson.dependencies[packageName] = `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.dependencies)\r\n keys.sort()\r\n const sortedDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDependencies[key] = packageJson.dependencies[key]\r\n }\r\n packageJson.dependencies = sortedDependencies\r\n consola.success(`添加 ${packageName} 至依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入开发依赖 */\r\nexport async function addDevDependencies(packageJson: Record<string, any>, packageName: string, version?: string) {\r\n try {\r\n packageJson.devDependencies ??= {}\r\n packageJson.devDependencies[packageName] ??= version?.trim() || `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.devDependencies)\r\n keys.sort()\r\n const sortedDevDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDevDependencies[key] = packageJson.devDependencies[key]\r\n }\r\n packageJson.devDependencies = sortedDevDependencies\r\n consola.success(`添加 ${packageName} 至开发依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至开发依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入最新开发依赖 */\r\nexport async function addLatestDevDependencies(packageJson: Record<string, any>, packageName: string) {\r\n try {\r\n packageJson.devDependencies ??= {}\r\n packageJson.devDependencies[packageName] = `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.devDependencies)\r\n keys.sort()\r\n const sortedDevDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDevDependencies[key] = packageJson.devDependencies[key]\r\n }\r\n packageJson.devDependencies = sortedDevDependencies\r\n consola.success(`添加 ${packageName} 至开发依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至开发依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写回 package.json */\r\nexport function writePackageJson(packageJson: Record<string, any>, path?: string) {\r\n try {\r\n writeFileSync(getPackageJsonPath(path), JSON.stringify(packageJson, undefined, 4), \"utf-8\")\r\n consola.success(\"修改 package.json 成功\")\r\n } catch (error) {\r\n consola.fail(\"修改 package.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\nexport interface GetFilesOptions {\r\n depth?: number\r\n exclude?: (path: ParsedPath, stats: Stats) => boolean\r\n}\r\n\r\nexport function getFiles(path: string, judge: (path: ParsedPath, stats: Stats) => boolean, depthOrOptions?: number | GetFilesOptions) {\r\n const result: string[] = []\r\n function _getFiles(path: string, depthOrOptions?: number | GetFilesOptions) {\r\n const options: GetFilesOptions = typeof depthOrOptions === \"number\" ? { depth: depthOrOptions } : depthOrOptions ?? {}\r\n const { depth, exclude } = options\r\n path = getAbsolutePath(path)\r\n const files = readdirSync(path)\r\n for (const file of files) {\r\n const filePath = join(path, file)\r\n const parsedPath = parse(filePath)\r\n const stat = statSync(filePath)\r\n if (judge(parsedPath, stat)) {\r\n result.push(filePath)\r\n }\r\n if (stat.isDirectory() && (!exclude || !exclude(parsedPath, stat)) && (depth === undefined || depth > 0)) {\r\n _getFiles(filePath, {\r\n depth: depth === undefined ? undefined : depth - 1,\r\n exclude\r\n })\r\n }\r\n }\r\n }\r\n _getFiles(path, depthOrOptions)\r\n return result\r\n}\r\n\r\n/** 删除 ESLint 配置文件 */\r\nexport function removeESLint() {\r\n try {\r\n const files = getFiles(cwd(), (path, stats) => /\\.eslintrc\\.[cm]?js/.test(path.base) && stats.isFile(), {\r\n depth: 1,\r\n exclude: path => path.base !== \"node_modules\"\r\n })\r\n files.forEach(file => {\r\n try {\r\n unlinkSync(file)\r\n } catch (error) {\r\n consola.fail(`删除 ${file} 失败`)\r\n }\r\n })\r\n consola.success(\"删除 ESLint 配置文件成功\")\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"获取 ESLint 配置文件列表失败\")\r\n }\r\n try {\r\n const pkg = readPackageJson()\r\n Object.keys(pkg.dependencies).forEach(key => {\r\n if (key.includes(\"eslint\")) delete pkg.dependencies[key]\r\n })\r\n Object.keys(pkg.devDependencies).forEach(key => {\r\n if (key.includes(\"eslint\")) delete pkg.devDependencies[key]\r\n })\r\n writePackageJson(pkg)\r\n consola.success(\"删除 ESLint 依赖成功\")\r\n } catch (error) {\r\n consola.fail(\"删除 ESLint 依赖失败\")\r\n }\r\n}\r\n\r\nexport function vite() {\r\n setTsConfig(\"noUnusedLocals\")\r\n setTsConfig(\"noUnusedParameters\")\r\n const pkg = readPackageJson()\r\n pkg.scripts.dev = \"vite --host\"\r\n writePackageJson(pkg)\r\n}\r\n\r\n/** 添加 tailwind.config.js 配置成功 */\r\nexport function addTailwindConfig() {\r\n try {\r\n writeFileSync(\r\n getAbsolutePath(\"tailwind.config.js\"),\r\n `/** @type {import('tailwindcss').Config} */\r\nexport default {\r\n content: [\r\n \"./index.html\",\r\n \"./src/**/*.{js,ts,jsx,tsx}\",\r\n ],\r\n theme: {\r\n extend: {},\r\n },\r\n plugins: [],\r\n}`,\r\n \"utf-8\"\r\n )\r\n consola.success(\"添加 tailwind.config.js 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 tailwind.config.js 配置失败\")\r\n }\r\n}\r\n\r\n/** 添加 postcss.config.js 配置成功 */\r\nexport function addPostCSSConfig() {\r\n try {\r\n writeFileSync(\r\n getAbsolutePath(\"postcss.config.cjs\"),\r\n `module.exports = {\r\n plugins: {\r\n tailwindcss: {},\r\n autoprefixer: {}\r\n }\r\n}\r\n`,\r\n \"utf-8\"\r\n )\r\n consola.success(\"添加 postcss.config.cjs 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 postcss.config.cjs 配置失败\")\r\n }\r\n}\r\n\r\n/** 添加 tailwind 至 index.css 成功 */\r\nexport function addTailwindToCSS() {\r\n try {\r\n const dir = getAbsolutePath(\"./src\")\r\n const files = getFiles(dir, (path, stats) => (path.base.toLowerCase() === \"index.css\" || path.base.toLowerCase() === \"app.css\") && stats.isFile(), { depth: 1 })\r\n if (files.length === 0) throw new Error(\"未找到 index.css 或 app.css\")\r\n const file = files.find(item => item.toLowerCase().endsWith(\"index.css\")) || files.find(item => item.toLowerCase().endsWith(\"app.css\"))!\r\n const { base } = parse(file)\r\n const css = readFileSync(file, \"utf-8\")\r\n if (css.includes(\"@tailwind\")) {\r\n consola.warn(`${base} 已经包含 tailwind`)\r\n return\r\n }\r\n writeFileSync(\r\n file,\r\n `@tailwind base; \r\n@tailwind components;\r\n@tailwind utilities;\r\n\r\n${css}`,\r\n \"utf-8\"\r\n )\r\n consola.success(`添加 tailwind 成功`)\r\n } catch (error) {\r\n console.log(error)\r\n consola.fail(`添加 tailwind 失败`)\r\n }\r\n}\r\n\r\nexport const prettierConfig: Config = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n\r\nexport const prettierConfigText = `module.exports = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n`\r\n\r\nexport const prettierConfigTextWithTailwind = `module.exports = {\r\n plugins: [\"prettier-plugin-tailwindcss\"],\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n`\r\n\r\n/** 添加 prettier 配置成功 */\r\nexport async function addPrettierConfig() {\r\n try {\r\n const packageJson = readPackageJson()\r\n const tailwind = Object.keys(packageJson.dependencies).includes(\"tailwindcss\") || Object.keys(packageJson.devDependencies).includes(\"tailwindcss\")\r\n writeFileSync(getAbsolutePath(\"./prettier.config.cjs\"), tailwind ? prettierConfigTextWithTailwind : prettierConfigText)\r\n const pkg = readPackageJson()\r\n await addDevDependencies(pkg, \"prettier\")\r\n await addDevDependencies(pkg, \"prettier-plugin-tailwindcss\")\r\n writePackageJson(pkg)\r\n consola.success(\"添加 prettier 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 prettier 配置失败\")\r\n }\r\n}\r\n\r\n/** 配置 tailwind */\r\nexport async function tailwind() {\r\n const pkg = readPackageJson()\r\n await addDevDependencies(pkg, \"tailwindcss\")\r\n await addDevDependencies(pkg, \"autoprefixer\")\r\n await addDevDependencies(pkg, \"postcss\")\r\n await addDevDependencies(pkg, \"prettier\")\r\n await addDevDependencies(pkg, \"prettier-plugin-tailwindcss\")\r\n writePackageJson(pkg)\r\n addTailwindConfig()\r\n addPostCSSConfig()\r\n addTailwindToCSS()\r\n await addPrettierConfig()\r\n}\r\n\r\nexport function removeComment(path: string) {\r\n try {\r\n const text = readFileSync(getAbsolutePath(path), \"utf-8\")\r\n const newText = text.replace(/^ *?\\/\\/.*?$/gm, \"\")\r\n writeFileSync(getAbsolutePath(path), newText, \"utf-8\")\r\n consola.success(\"删除注释成功\")\r\n } catch (error) {\r\n consola.fail(\"删除注释失败\")\r\n }\r\n}\r\n\r\nexport enum Target {\r\n ES2015 = \"ES2015\",\r\n ES2016 = \"ES2016\",\r\n ES2017 = \"ES2017\",\r\n ES2018 = \"ES2018\",\r\n ES2019 = \"ES2019\",\r\n ES2020 = \"ES2020\",\r\n ES2021 = \"ES2021\",\r\n ES2022 = \"ES2022\",\r\n ES2023 = \"ES2023\",\r\n ES3 = \"ES3\",\r\n ES5 = \"ES5\",\r\n ES6 = \"ES6\",\r\n ESNext = \"ESNext\"\r\n}\r\n\r\nexport enum Module {\r\n AMD = \"AMD\",\r\n CommonJS = \"CommonJS\",\r\n ES2015 = \"ES2015\",\r\n ES2020 = \"ES2020\",\r\n ES2022 = \"ES2022\",\r\n ES6 = \"ES6\",\r\n ESNext = \"ESNext\",\r\n Node16 = \"Node16\",\r\n NodeNext = \"NodeNext\",\r\n None = \"None\",\r\n System = \"System\",\r\n UMD = \"UMD\"\r\n}\r\n\r\nexport enum ModuleResolution {\r\n Bundler = \"Bundler\",\r\n Classic = \"Classic\",\r\n Node = \"Node\",\r\n Node10 = \"Node10\",\r\n Node16 = \"Node16\",\r\n NodeNext = \"NodeNext\"\r\n}\r\n\r\nexport function setTsConfig(key: string, value?: string | undefined) {\r\n const tsconfig = readTsConfigJSON()\r\n if (value === undefined) {\r\n delete tsconfig.compilerOptions[key]\r\n } else {\r\n if (key === \"target\") {\r\n const t = Object.values(Target).find(t => t.toLowerCase() === value.trim().toLowerCase())\r\n if (!t) {\r\n consola.fail(\"无效的 target 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.target = t\r\n } else if (key === \"module\") {\r\n const m = Object.values(Module).find(m => m.toLowerCase() === value.trim().toLowerCase())\r\n if (!m) {\r\n consola.fail(\"无效的 module 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.module = m\r\n } else if (key === \"moduleResolution\") {\r\n const mr = Object.values(ModuleResolution).find(mr => mr.toLowerCase() === value.trim().toLowerCase())\r\n if (!mr) {\r\n consola.fail(\"无效的 moduleResolution 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.moduleResolution = mr\r\n } else {\r\n consola.fail(`暂不支持 ${key} 项`)\r\n exit()\r\n }\r\n }\r\n writeFileSync(getTsConfigJsonPath(), JSON.stringify(tsconfig, undefined, 4), \"utf-8\")\r\n consola.success(`修改 ${key} 成功`)\r\n}\r\n\r\nexport function sortArrayOrObject(data: any) {\r\n if (typeof data !== \"object\" || data === null) return data\r\n if (Array.isArray(data)) {\r\n const _data = [...data]\r\n _data.sort()\r\n return _data\r\n }\r\n if (Object.getPrototypeOf(data) === Object.prototype) {\r\n const keys = Object.keys(data)\r\n keys.sort()\r\n const _data: Record<string, any> = {}\r\n for (const key of keys) {\r\n _data[key] = data[key]\r\n }\r\n return _data\r\n }\r\n return data\r\n}\r\n\r\nexport async function install() {\r\n const install = await consola.prompt(\"是否立即安装\", {\r\n type: \"select\",\r\n options: [\"yarn\", \"pnpm\", \"npm\", \"no\"],\r\n initial: \"yarn\"\r\n })\r\n if (install === \"no\") return\r\n await spawnAsync(`${install} install`)\r\n}\r\n\r\nexport function getTypeInGenerics(str: string, start = 0) {\r\n if (str[start] !== \"<\") throw new Error(\"无效的泛型\")\r\n let count = 1\r\n let index: number | undefined = undefined\r\n for (let i = start + 1; i < str.length; i++) {\r\n const w = str[i]\r\n if (w === \"<\") {\r\n count++\r\n continue\r\n }\r\n if (w === \">\") {\r\n count--\r\n if (count === 0) {\r\n index = i\r\n break\r\n }\r\n }\r\n }\r\n if (index === undefined) throw new Error(\"无效的泛型\")\r\n return str.slice(start + 1, index)\r\n}\r\n\r\nexport type SpawnAsyncOptions = {\r\n ignoreError?: boolean\r\n cwd?: string | URL | undefined\r\n}\r\n\r\nexport function spawnAsync(command: string, options?: SpawnAsyncOptions) {\r\n const { ignoreError = false, cwd } = options || {}\r\n return new Promise<void>((resolve, reject) => {\r\n const child = spawn(command, { shell: true, stdio: \"inherit\", cwd })\r\n child.on(\"exit\", code => {\r\n if (code !== 0 && !ignoreError) {\r\n reject(new Error(`Command failed with code ${code}`))\r\n return\r\n }\r\n resolve()\r\n })\r\n })\r\n}\r\n\r\nexport function splitExtendsType(str: string) {\r\n const types: string[] = []\r\n let index = 0\r\n for (let i = 0; i < str.length; i++) {\r\n const w = str[i]\r\n if (w === \"<\") {\r\n const type = getTypeInGenerics(str, i)\r\n i += type.length + 1\r\n continue\r\n }\r\n if (w === \",\") {\r\n types.push(str.slice(index, i))\r\n index = i + 1\r\n }\r\n }\r\n types.push(str.slice(index))\r\n return types.map(v => v.trim()).filter(v => v)\r\n}\r\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["consola", "path", "depthOrOptions", "tailwind", "Target", "Module", "ModuleResolution", "t", "m", "mr", "install", "cwd"]
|
|
4
|
+
"sourcesContent": ["import { spawn } from \"child_process\"\r\nimport consola from \"consola\"\r\nimport { Stats, readFileSync, readdirSync, statSync, unlinkSync, writeFileSync } from \"fs\"\r\nimport * as JSON5 from \"json5\"\r\nimport { ParsedPath, isAbsolute, join, parse } from \"path\"\r\nimport { Config } from \"prettier\"\r\nimport { cwd, exit } from \"process\"\r\n\r\nfunction getAbsolutePath(path: string) {\r\n return isAbsolute(path) ? path : join(cwd(), path)\r\n}\r\n\r\nexport function getPackageJsonPath(path?: string) {\r\n return join(getAbsolutePath(path ?? cwd()), \"package.json\")\r\n}\r\n\r\nexport function getTsConfigJsonPath(path?: string) {\r\n return join(getAbsolutePath(path ?? cwd()), \"tsconfig.json\")\r\n}\r\n\r\n/** 获取包的最新版本 */\r\nexport async function getPackageLatestVersion(packageName: string) {\r\n try {\r\n const url = `https://registry.npmjs.org/${packageName}/latest`\r\n const response = await fetch(url)\r\n const data = await response.json()\r\n return data.version as string\r\n } catch (error) {\r\n consola.fail(`获取 ${packageName} 最新版本号失败`)\r\n exit()\r\n }\r\n}\r\n\r\nexport async function getPackageVersions(packageName: string) {\r\n try {\r\n const url = `https://registry.npmjs.org/${packageName}`\r\n const response = await fetch(url)\r\n const data = await response.json()\r\n return Object.keys(data.versions) as string[]\r\n } catch (error) {\r\n consola.fail(`获取 ${packageName} 版本号失败`)\r\n exit()\r\n }\r\n}\r\n\r\nexport function getVersionFromRequiredVersion(requiredVersion: string) {\r\n return requiredVersion.replace(/^\\D*/, \"\")\r\n}\r\n\r\nexport function getVersionNum(version: string) {\r\n const nums = version.split(\".\").map(Number)\r\n if (nums.some(num => !Number.isInteger(num) || num < 0) || nums.length < 3) {\r\n consola.fail(`无效的版本号 ${version}`)\r\n exit()\r\n }\r\n return nums\r\n}\r\n\r\nexport async function getPackageUpgradeVersion(packageName: string, version: string, level: \"latest\" | \"major\" | \"minor\" | \"patch\") {\r\n if (level === \"latest\") {\r\n const latestVersion = await getPackageLatestVersion(packageName)\r\n if (version === latestVersion) return undefined\r\n return latestVersion\r\n }\r\n const current = getVersionNum(version)\r\n const versions = await getPackageVersions(packageName)\r\n return versions.find(item => {\r\n const latest = getVersionNum(item)\r\n const index = latest.findIndex((num, index) => num > current[index])\r\n if (index === -1) return false\r\n if (level === \"major\") return index >= 0\r\n if (level === \"minor\") return index >= 1\r\n if (level === \"patch\") return index >= 2\r\n })\r\n}\r\n\r\n/** 读取 package.json */\r\nexport function readPackageJson(path?: string): Record<string, any> {\r\n try {\r\n const result = JSON.parse(readFileSync(getPackageJsonPath(path), \"utf-8\"))\r\n return result\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"读取 package.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\n/** 读取 tsconfig.json */\r\nexport function readTsConfigJSON(path?: string): Record<string, any> {\r\n try {\r\n const result = JSON5.parse(readFileSync(getTsConfigJsonPath(path), \"utf-8\"))\r\n return result\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"读取 tsconfig.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入依赖 */\r\nexport async function addDependencies(packageJson: Record<string, any>, packageName: string, version?: string) {\r\n try {\r\n packageJson.dependencies ??= {}\r\n packageJson.dependencies[packageName] ??= version?.trim() || `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.dependencies)\r\n keys.sort()\r\n const sortedDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDependencies[key] = packageJson.dependencies[key]\r\n }\r\n packageJson.dependencies = sortedDependencies\r\n consola.success(`添加 ${packageName} 至依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入最新依赖 */\r\nexport async function addLatestDependencies(packageJson: Record<string, any>, packageName: string) {\r\n try {\r\n packageJson.dependencies ??= {}\r\n packageJson.dependencies[packageName] = `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.dependencies)\r\n keys.sort()\r\n const sortedDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDependencies[key] = packageJson.dependencies[key]\r\n }\r\n packageJson.dependencies = sortedDependencies\r\n consola.success(`添加 ${packageName} 至依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入开发依赖 */\r\nexport async function addDevDependencies(packageJson: Record<string, any>, packageName: string, version?: string) {\r\n try {\r\n packageJson.devDependencies ??= {}\r\n packageJson.devDependencies[packageName] ??= version?.trim() || `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.devDependencies)\r\n keys.sort()\r\n const sortedDevDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDevDependencies[key] = packageJson.devDependencies[key]\r\n }\r\n packageJson.devDependencies = sortedDevDependencies\r\n consola.success(`添加 ${packageName} 至开发依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至开发依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写入最新开发依赖 */\r\nexport async function addLatestDevDependencies(packageJson: Record<string, any>, packageName: string) {\r\n try {\r\n packageJson.devDependencies ??= {}\r\n packageJson.devDependencies[packageName] = `^${await getPackageLatestVersion(packageName)}`\r\n const keys = Object.keys(packageJson.devDependencies)\r\n keys.sort()\r\n const sortedDevDependencies: Record<string, string> = {}\r\n for (const key of keys) {\r\n sortedDevDependencies[key] = packageJson.devDependencies[key]\r\n }\r\n packageJson.devDependencies = sortedDevDependencies\r\n consola.success(`添加 ${packageName} 至开发依赖成功`)\r\n } catch (error) {\r\n consola.fail(`添加 ${packageName} 至开发依赖失败`)\r\n exit()\r\n }\r\n}\r\n\r\n/** 写回 package.json */\r\nexport function writePackageJson(packageJson: Record<string, any>, path?: string) {\r\n try {\r\n writeFileSync(getPackageJsonPath(path), JSON.stringify(packageJson, undefined, 4), \"utf-8\")\r\n consola.success(\"修改 package.json 成功\")\r\n } catch (error) {\r\n consola.fail(\"修改 package.json 失败\")\r\n exit()\r\n }\r\n}\r\n\r\nexport interface GetFilesOptions {\r\n depth?: number\r\n exclude?: (path: ParsedPath, stats: Stats) => boolean\r\n}\r\n\r\nexport function getFiles(path: string, judge: (path: ParsedPath, stats: Stats) => boolean, depthOrOptions?: number | GetFilesOptions) {\r\n const result: string[] = []\r\n function _getFiles(path: string, depthOrOptions?: number | GetFilesOptions) {\r\n const options: GetFilesOptions = typeof depthOrOptions === \"number\" ? { depth: depthOrOptions } : depthOrOptions ?? {}\r\n const { depth, exclude } = options\r\n path = getAbsolutePath(path)\r\n const files = readdirSync(path)\r\n for (const file of files) {\r\n const filePath = join(path, file)\r\n const parsedPath = parse(filePath)\r\n const stat = statSync(filePath)\r\n if (judge(parsedPath, stat)) {\r\n result.push(filePath)\r\n }\r\n if (stat.isDirectory() && (!exclude || !exclude(parsedPath, stat)) && (depth === undefined || depth > 0)) {\r\n _getFiles(filePath, {\r\n depth: depth === undefined ? undefined : depth - 1,\r\n exclude\r\n })\r\n }\r\n }\r\n }\r\n _getFiles(path, depthOrOptions)\r\n return result\r\n}\r\n\r\n/** 删除 ESLint 配置文件 */\r\nexport function removeESLint() {\r\n try {\r\n const files = getFiles(cwd(), (path, stats) => /\\.eslintrc\\.[cm]?js/.test(path.base) && stats.isFile(), {\r\n depth: 1,\r\n exclude: path => path.base !== \"node_modules\"\r\n })\r\n files.forEach(file => {\r\n try {\r\n unlinkSync(file)\r\n } catch (error) {\r\n consola.fail(`删除 ${file} 失败`)\r\n }\r\n })\r\n consola.success(\"删除 ESLint 配置文件成功\")\r\n } catch (error) {\r\n consola.error(error)\r\n consola.fail(\"获取 ESLint 配置文件列表失败\")\r\n }\r\n try {\r\n const pkg = readPackageJson()\r\n Object.keys(pkg.dependencies).forEach(key => {\r\n if (key.includes(\"eslint\")) delete pkg.dependencies[key]\r\n })\r\n Object.keys(pkg.devDependencies).forEach(key => {\r\n if (key.includes(\"eslint\")) delete pkg.devDependencies[key]\r\n })\r\n writePackageJson(pkg)\r\n consola.success(\"删除 ESLint 依赖成功\")\r\n } catch (error) {\r\n consola.fail(\"删除 ESLint 依赖失败\")\r\n }\r\n}\r\n\r\nexport function vite() {\r\n setTsConfig(\"noUnusedLocals\")\r\n setTsConfig(\"noUnusedParameters\")\r\n const pkg = readPackageJson()\r\n pkg.scripts.dev = \"vite --host\"\r\n writePackageJson(pkg)\r\n}\r\n\r\n/** 添加 tailwind.config.js 配置成功 */\r\nexport function addTailwindConfig() {\r\n try {\r\n writeFileSync(\r\n getAbsolutePath(\"tailwind.config.js\"),\r\n `/** @type {import('tailwindcss').Config} */\r\nexport default {\r\n content: [\r\n \"./index.html\",\r\n \"./src/**/*.{js,ts,jsx,tsx}\",\r\n ],\r\n theme: {\r\n extend: {},\r\n },\r\n plugins: [],\r\n}`,\r\n \"utf-8\"\r\n )\r\n consola.success(\"添加 tailwind.config.js 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 tailwind.config.js 配置失败\")\r\n }\r\n}\r\n\r\n/** 添加 postcss.config.js 配置成功 */\r\nexport function addPostCSSConfig() {\r\n try {\r\n writeFileSync(\r\n getAbsolutePath(\"postcss.config.cjs\"),\r\n `module.exports = {\r\n plugins: {\r\n tailwindcss: {},\r\n autoprefixer: {}\r\n }\r\n}\r\n`,\r\n \"utf-8\"\r\n )\r\n consola.success(\"添加 postcss.config.cjs 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 postcss.config.cjs 配置失败\")\r\n }\r\n}\r\n\r\n/** 添加 tailwind 至 index.css 成功 */\r\nexport function addTailwindToCSS() {\r\n try {\r\n const dir = getAbsolutePath(\"./src\")\r\n const files = getFiles(dir, (path, stats) => (path.base.toLowerCase() === \"index.css\" || path.base.toLowerCase() === \"app.css\") && stats.isFile(), { depth: 1 })\r\n if (files.length === 0) throw new Error(\"未找到 index.css 或 app.css\")\r\n const file = files.find(item => item.toLowerCase().endsWith(\"index.css\")) || files.find(item => item.toLowerCase().endsWith(\"app.css\"))!\r\n const { base } = parse(file)\r\n const css = readFileSync(file, \"utf-8\")\r\n if (css.includes(\"@tailwind\")) {\r\n consola.warn(`${base} 已经包含 tailwind`)\r\n return\r\n }\r\n writeFileSync(\r\n file,\r\n `@tailwind base; \r\n@tailwind components;\r\n@tailwind utilities;\r\n\r\n${css}`,\r\n \"utf-8\"\r\n )\r\n consola.success(`添加 tailwind 成功`)\r\n } catch (error) {\r\n console.log(error)\r\n consola.fail(`添加 tailwind 失败`)\r\n }\r\n}\r\n\r\nexport const prettierConfig: Config = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n\r\nexport const prettierConfigText = `module.exports = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n`\r\n\r\nexport const prettierConfigTextWithTailwind = `module.exports = {\r\n plugins: [\"prettier-plugin-tailwindcss\"],\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 800,\r\n trailingComma: \"none\"\r\n}\r\n`\r\n\r\n/** 添加 prettier 配置成功 */\r\nexport async function addPrettierConfig() {\r\n try {\r\n const packageJson = readPackageJson()\r\n const tailwind = Object.keys(packageJson.dependencies).includes(\"tailwindcss\") || Object.keys(packageJson.devDependencies).includes(\"tailwindcss\")\r\n writeFileSync(getAbsolutePath(\"./prettier.config.cjs\"), tailwind ? prettierConfigTextWithTailwind : prettierConfigText)\r\n const pkg = readPackageJson()\r\n await addDevDependencies(pkg, \"prettier\")\r\n await addDevDependencies(pkg, \"prettier-plugin-tailwindcss\")\r\n writePackageJson(pkg)\r\n consola.success(\"添加 prettier 配置成功\")\r\n } catch (error) {\r\n consola.fail(\"添加 prettier 配置失败\")\r\n }\r\n}\r\n\r\n/** 配置 tailwind */\r\nexport async function tailwind() {\r\n const pkg = readPackageJson()\r\n await addDevDependencies(pkg, \"tailwindcss\")\r\n await addDevDependencies(pkg, \"autoprefixer\")\r\n await addDevDependencies(pkg, \"postcss\")\r\n await addDevDependencies(pkg, \"prettier\")\r\n await addDevDependencies(pkg, \"prettier-plugin-tailwindcss\")\r\n writePackageJson(pkg)\r\n addTailwindConfig()\r\n addPostCSSConfig()\r\n addTailwindToCSS()\r\n await addPrettierConfig()\r\n}\r\n\r\nexport function removeComment(path: string) {\r\n try {\r\n const text = readFileSync(getAbsolutePath(path), \"utf-8\")\r\n const newText = text.replace(/^ *?\\/\\/.*?$/gm, \"\")\r\n writeFileSync(getAbsolutePath(path), newText, \"utf-8\")\r\n consola.success(\"删除注释成功\")\r\n } catch (error) {\r\n consola.fail(\"删除注释失败\")\r\n }\r\n}\r\n\r\nexport enum Target {\r\n ES2015 = \"ES2015\",\r\n ES2016 = \"ES2016\",\r\n ES2017 = \"ES2017\",\r\n ES2018 = \"ES2018\",\r\n ES2019 = \"ES2019\",\r\n ES2020 = \"ES2020\",\r\n ES2021 = \"ES2021\",\r\n ES2022 = \"ES2022\",\r\n ES2023 = \"ES2023\",\r\n ES3 = \"ES3\",\r\n ES5 = \"ES5\",\r\n ES6 = \"ES6\",\r\n ESNext = \"ESNext\"\r\n}\r\n\r\nexport enum Module {\r\n AMD = \"AMD\",\r\n CommonJS = \"CommonJS\",\r\n ES2015 = \"ES2015\",\r\n ES2020 = \"ES2020\",\r\n ES2022 = \"ES2022\",\r\n ES6 = \"ES6\",\r\n ESNext = \"ESNext\",\r\n Node16 = \"Node16\",\r\n NodeNext = \"NodeNext\",\r\n None = \"None\",\r\n System = \"System\",\r\n UMD = \"UMD\"\r\n}\r\n\r\nexport enum ModuleResolution {\r\n Bundler = \"Bundler\",\r\n Classic = \"Classic\",\r\n Node = \"Node\",\r\n Node10 = \"Node10\",\r\n Node16 = \"Node16\",\r\n NodeNext = \"NodeNext\"\r\n}\r\n\r\nexport function setTsConfig(key: string, value?: string | undefined) {\r\n const tsconfig = readTsConfigJSON()\r\n if (value === undefined) {\r\n delete tsconfig.compilerOptions[key]\r\n } else {\r\n if (key === \"target\") {\r\n const t = Object.values(Target).find(t => t.toLowerCase() === value.trim().toLowerCase())\r\n if (!t) {\r\n consola.fail(\"无效的 target 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.target = t\r\n } else if (key === \"module\") {\r\n const m = Object.values(Module).find(m => m.toLowerCase() === value.trim().toLowerCase())\r\n if (!m) {\r\n consola.fail(\"无效的 module 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.module = m\r\n } else if (key === \"moduleResolution\") {\r\n const mr = Object.values(ModuleResolution).find(mr => mr.toLowerCase() === value.trim().toLowerCase())\r\n if (!mr) {\r\n consola.fail(\"无效的 moduleResolution 选项\")\r\n exit()\r\n }\r\n tsconfig.compilerOptions.moduleResolution = mr\r\n } else {\r\n consola.fail(`暂不支持 ${key} 项`)\r\n exit()\r\n }\r\n }\r\n writeFileSync(getTsConfigJsonPath(), JSON.stringify(tsconfig, undefined, 4), \"utf-8\")\r\n consola.success(`修改 ${key} 成功`)\r\n}\r\n\r\nexport function sortArrayOrObject(data: any) {\r\n if (typeof data !== \"object\" || data === null) return data\r\n if (Array.isArray(data)) {\r\n const _data = [...data]\r\n _data.sort()\r\n return _data\r\n }\r\n if (Object.getPrototypeOf(data) === Object.prototype) {\r\n const keys = Object.keys(data)\r\n keys.sort()\r\n const _data: Record<string, any> = {}\r\n for (const key of keys) {\r\n _data[key] = data[key]\r\n }\r\n return _data\r\n }\r\n return data\r\n}\r\n\r\nexport async function install() {\r\n const install = await consola.prompt(\"是否立即安装\", {\r\n type: \"select\",\r\n options: [\"yarn\", \"pnpm\", \"npm\", \"no\"],\r\n initial: \"yarn\"\r\n })\r\n if (install === \"no\") return\r\n await spawnAsync(`${install} install`)\r\n}\r\n\r\nexport function getTypeInGenerics(str: string, start = 0) {\r\n if (str[start] !== \"<\") throw new Error(\"无效的泛型\")\r\n let count = 1\r\n let index: number | undefined = undefined\r\n for (let i = start + 1; i < str.length; i++) {\r\n const w = str[i]\r\n if (w === \"<\") {\r\n count++\r\n continue\r\n }\r\n if (w === \">\") {\r\n count--\r\n if (count === 0) {\r\n index = i\r\n break\r\n }\r\n }\r\n }\r\n if (index === undefined) throw new Error(\"无效的泛型\")\r\n return str.slice(start + 1, index)\r\n}\r\n\r\nexport type SpawnAsyncOptions = {\r\n ignoreError?: boolean\r\n cwd?: string | URL | undefined\r\n}\r\n\r\nexport function spawnAsync(command: string, options?: SpawnAsyncOptions) {\r\n const { ignoreError = false, cwd } = options || {}\r\n return new Promise<void>((resolve, reject) => {\r\n const child = spawn(command, { shell: true, stdio: \"inherit\", cwd })\r\n child.on(\"exit\", code => {\r\n if (code !== 0 && !ignoreError) {\r\n reject(new Error(`Command failed with code ${code}`))\r\n return\r\n }\r\n resolve()\r\n })\r\n })\r\n}\r\n\r\nexport function splitExtendsType(str: string) {\r\n const types: string[] = []\r\n let index = 0\r\n for (let i = 0; i < str.length; i++) {\r\n const w = str[i]\r\n if (w === \"<\") {\r\n const type = getTypeInGenerics(str, i)\r\n i += type.length + 1\r\n continue\r\n }\r\n if (w === \",\") {\r\n types.push(str.slice(index, i))\r\n index = i + 1\r\n }\r\n }\r\n types.push(str.slice(index))\r\n return types.map(v => v.trim()).filter(v => v)\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["consola", "index", "path", "depthOrOptions", "tailwind", "Target", "Module", "ModuleResolution", "t", "m", "mr", "install", "cwd"]
|
|
7
7
|
}
|
package/package.json
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "zixulu",
|
|
3
|
-
"version": "1.13.
|
|
4
|
-
"main": "dist/index.js",
|
|
5
|
-
"types": "dist/index.d.ts",
|
|
6
|
-
"bin": "dist/index.js",
|
|
7
|
-
"scripts": {
|
|
8
|
-
"dev": "father dev",
|
|
9
|
-
"build": "father build",
|
|
10
|
-
"build:deps": "father prebundle",
|
|
11
|
-
"prepublishOnly": "father doctor && npm run build"
|
|
12
|
-
},
|
|
13
|
-
"keywords": [],
|
|
14
|
-
"authors": [],
|
|
15
|
-
"license": "MIT",
|
|
16
|
-
"files": [
|
|
17
|
-
"compiled",
|
|
18
|
-
"dist",
|
|
19
|
-
"src"
|
|
20
|
-
],
|
|
21
|
-
"publishConfig": {
|
|
22
|
-
"access": "public",
|
|
23
|
-
"registry": "https://registry.npmjs.org/"
|
|
24
|
-
},
|
|
25
|
-
"repository": {
|
|
26
|
-
"type": "git",
|
|
27
|
-
"url": "git+https://github.com/1adybug/zixulu.git"
|
|
28
|
-
},
|
|
29
|
-
"dependencies": {
|
|
30
|
-
"commander": "^12.0.0",
|
|
31
|
-
"consola": "^3.2.3",
|
|
32
|
-
"inquirer": "^9.2.16",
|
|
33
|
-
"json5": "^2.2.3",
|
|
34
|
-
"prettier": "^3.2.5"
|
|
35
|
-
},
|
|
36
|
-
"devDependencies": {
|
|
37
|
-
"@types/inquirer": "^9.0.7",
|
|
38
|
-
"@types/node": "^20.11.27",
|
|
39
|
-
"father": "^4.4.0"
|
|
40
|
-
}
|
|
41
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "zixulu",
|
|
3
|
+
"version": "1.13.3",
|
|
4
|
+
"main": "dist/index.js",
|
|
5
|
+
"types": "dist/index.d.ts",
|
|
6
|
+
"bin": "dist/index.js",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"dev": "father dev",
|
|
9
|
+
"build": "father build",
|
|
10
|
+
"build:deps": "father prebundle",
|
|
11
|
+
"prepublishOnly": "father doctor && npm run build"
|
|
12
|
+
},
|
|
13
|
+
"keywords": [],
|
|
14
|
+
"authors": [],
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"files": [
|
|
17
|
+
"compiled",
|
|
18
|
+
"dist",
|
|
19
|
+
"src"
|
|
20
|
+
],
|
|
21
|
+
"publishConfig": {
|
|
22
|
+
"access": "public",
|
|
23
|
+
"registry": "https://registry.npmjs.org/"
|
|
24
|
+
},
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "git+https://github.com/1adybug/zixulu.git"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"commander": "^12.0.0",
|
|
31
|
+
"consola": "^3.2.3",
|
|
32
|
+
"inquirer": "^9.2.16",
|
|
33
|
+
"json5": "^2.2.3",
|
|
34
|
+
"prettier": "^3.2.5"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/inquirer": "^9.0.7",
|
|
38
|
+
"@types/node": "^20.11.27",
|
|
39
|
+
"father": "^4.4.0"
|
|
40
|
+
}
|
|
41
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -211,7 +211,7 @@ program
|
|
|
211
211
|
type: "list",
|
|
212
212
|
name: "level",
|
|
213
213
|
message: "请选择升级的级别",
|
|
214
|
-
choices: ["major", "minor", "patch"]
|
|
214
|
+
choices: ["latest", "major", "minor", "patch"]
|
|
215
215
|
})
|
|
216
216
|
|
|
217
217
|
for (const type of types) {
|
|
@@ -437,23 +437,26 @@ program
|
|
|
437
437
|
.description("将 interface 转换为 type")
|
|
438
438
|
.action(async () => {
|
|
439
439
|
consola.warn("请在使用本功能前提交或备份代码")
|
|
440
|
+
|
|
440
441
|
const files = getFiles(".", (path, stats) => (path.ext === ".tsx" || path.ext === ".ts") && !path.base.endsWith(".d.ts") && stats.isFile(), {
|
|
441
442
|
exclude: (path, stats) => stats.isDirectory() && path.base === "node_modules"
|
|
442
443
|
})
|
|
443
444
|
|
|
445
|
+
const { default: inquirer } = await import("inquirer")
|
|
446
|
+
|
|
447
|
+
const { ifContinue } = await inquirer.prompt({
|
|
448
|
+
type: "confirm",
|
|
449
|
+
name: "ifContinue",
|
|
450
|
+
message: "是否继续"
|
|
451
|
+
})
|
|
452
|
+
|
|
453
|
+
if (!ifContinue) return
|
|
454
|
+
|
|
444
455
|
const reg = /(export )?interface (.+?) {/gm
|
|
445
456
|
const reg1 = /\bexport\b/
|
|
446
457
|
const reg2 = /(\w+?) extends (.+)/
|
|
447
458
|
const modifiedFiles: Set<string> = new Set()
|
|
448
459
|
|
|
449
|
-
consola.start("格式化代码")
|
|
450
|
-
|
|
451
|
-
await addPrettierConfig()
|
|
452
|
-
|
|
453
|
-
await spawnAsync("yarn")
|
|
454
|
-
|
|
455
|
-
await spawnAsync("npx prettier --write ./src")
|
|
456
|
-
|
|
457
460
|
for (const file of files) {
|
|
458
461
|
const code = await readFile(file, "utf-8")
|
|
459
462
|
const newCode = code.replace(reg, match => {
|
|
@@ -474,10 +477,6 @@ program
|
|
|
474
477
|
|
|
475
478
|
if (modifiedFiles.size > 0) consola.success(`以下文件中的 interface 已经转换为 type:\n\n${Array.from(modifiedFiles).join("\n")}`)
|
|
476
479
|
|
|
477
|
-
consola.start("格式化代码")
|
|
478
|
-
|
|
479
|
-
await spawnAsync("npx prettier --write ./src")
|
|
480
|
-
|
|
481
480
|
consola.start("检查项目是否存在 TypeScript 错误")
|
|
482
481
|
|
|
483
482
|
await spawnAsync("npx tsc --noEmit")
|
package/src/utils/index.ts
CHANGED
|
@@ -56,20 +56,21 @@ export function getVersionNum(version: string) {
|
|
|
56
56
|
return nums
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
export async function getPackageUpgradeVersion(packageName: string, version: string, level: "major" | "minor" | "patch") {
|
|
60
|
-
if (level === "
|
|
59
|
+
export async function getPackageUpgradeVersion(packageName: string, version: string, level: "latest" | "major" | "minor" | "patch") {
|
|
60
|
+
if (level === "latest") {
|
|
61
61
|
const latestVersion = await getPackageLatestVersion(packageName)
|
|
62
62
|
if (version === latestVersion) return undefined
|
|
63
63
|
return latestVersion
|
|
64
64
|
}
|
|
65
|
-
const
|
|
65
|
+
const current = getVersionNum(version)
|
|
66
66
|
const versions = await getPackageVersions(packageName)
|
|
67
|
-
return versions.find(
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
67
|
+
return versions.find(item => {
|
|
68
|
+
const latest = getVersionNum(item)
|
|
69
|
+
const index = latest.findIndex((num, index) => num > current[index])
|
|
70
|
+
if (index === -1) return false
|
|
71
|
+
if (level === "major") return index >= 0
|
|
72
|
+
if (level === "minor") return index >= 1
|
|
73
|
+
if (level === "patch") return index >= 2
|
|
73
74
|
})
|
|
74
75
|
}
|
|
75
76
|
|