zixulu 1.40.4 → 1.41.0

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 CHANGED
@@ -38,11 +38,11 @@ var import_commander = require("commander");
38
38
  var import_path = require("path");
39
39
  var import_actionWithBackup = require("./utils/actionWithBackup");
40
40
  var import_addStartScript = require("./utils/addStartScript");
41
+ var import_addZipDist = require("./utils/addZipDist");
41
42
  var import_createBrowserlistrc = require("./utils/createBrowserlistrc");
42
43
  var import_getCommitMessage = require("./utils/getCommitMessage");
43
44
  var import_getHeaders = require("./utils/getHeaders");
44
45
  var import_readPackageJsonSync = require("./utils/readPackageJsonSync");
45
- var import_removeTailwindCssPreset = require("./utils/removeTailwindCssPreset");
46
46
  var import_replaceAssets = require("./utils/replaceAssets");
47
47
  var import_setGlobal = require("./utils/setGlobal");
48
48
  var import_upgradeRsbuild = require("./utils/upgradeRsbuild");
@@ -100,7 +100,7 @@ program.command("upgrade-rsbuild").alias("ur").description("升级 rsbuild").opt
100
100
  await (0, import_actionWithBackup.actionWithBackup)(() => (0, import_upgradeRsbuild.upgradeRsbuild)())();
101
101
  });
102
102
  program.command("add-start-script").alias("ass").argument("type", "启动脚本类型:express、next").option("-p, --port <port>", "端口地址").option("-c, --core <core>", "实例数").option("-h, --hostname <hostname>", "主机名").option("-pem, --pemPath <pemPath>", "证书目录").description("添加 express 启动脚本").action(async (type, { port, core, pemPath }) => (0, import_actionWithBackup.actionWithBackup)(import_addStartScript.addStartScript)({ type, port, core, pemPath }));
103
- program.command("removeTailwindCssPreflight").alias("rtp").description("删除 tailwindcss 的 preflight.css 中的 img 和 video 样式").action((0, import_actionWithBackup.actionWithBackup)(() => (0, import_removeTailwindCssPreset.removeTailwindCssPreflight)()));
104
103
  program.command("headers").description("将浏览器中直接复制的 headers 转换为对象").action(import_getHeaders.getHeaders);
104
+ program.command("add-zip-dist").alias("azd").description("添加将 dist 压缩的脚本").action((0, import_actionWithBackup.actionWithBackup)(() => (0, import_addZipDist.addZipDist)({ install: true })));
105
105
  program.parse();
106
106
  //# sourceMappingURL=index.js.map
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 { CommitType } from \"@constant/index\"\r\nimport { addAntd } from \"@utils/addAntd\"\r\nimport { addGitignore } from \"@utils/addGitignore\"\r\nimport { addFolderPathAlias, replacePathAlias } from \"@utils/addPathAlias\"\r\nimport { addPrettier } from \"@utils/addPrettier\"\r\nimport { addPrisma } from \"@utils/addPrisma\"\r\nimport { arrowToFunction } from \"@utils/arrowToFunction\"\r\nimport { betaVersion } from \"@utils/betaVersion\"\r\nimport { checkType } from \"@utils/checkType\"\r\nimport { code2Snippet } from \"@utils/code2Snippet\"\r\nimport { downloadLatestSoftware } from \"@utils/downloadLatestSoftware\"\r\nimport { downloadNpm } from \"@utils/downloadNpm\"\r\nimport { generatePrisma } from \"@utils/generatePrisma\"\r\nimport { initProject } from \"@utils/initProject\"\r\nimport { interfaceToType } from \"@utils/interfaceToType\"\r\nimport { killProcessByPort } from \"@utils/killProcessByPort\"\r\nimport { next } from \"@utils/next\"\r\nimport { pnpm } from \"@utils/pnpm\"\r\nimport { reinstall } from \"@utils/reinstall\"\r\nimport { removeComment } from \"@utils/removeComment\"\r\nimport { removeESLint } from \"@utils/removeESLint\"\r\nimport { removeFileOrFolderFromGit } from \"@utils/removeFileOrFolderFromGit\"\r\nimport { rollup } from \"@utils/rollup\"\r\nimport { rsbuild } from \"@utils/rsbuild\"\r\nimport { setFatherConfig } from \"@utils/setFatherConfig\"\r\nimport { setGitProxy } from \"@utils/setGitProxy\"\r\nimport { setRegistry } from \"@utils/setRegistry\"\r\nimport { setShellProxy } from \"@utils/setShellProxy\"\r\nimport { sortPackageJson } from \"@utils/sortPackageJson\"\r\nimport { syncVscode } from \"@utils/syncVscode\"\r\nimport { tailwind } from \"@utils/tailwind\"\r\nimport { upgradeDependency } from \"@utils/upgradeDependency\"\r\nimport { vite } from \"@utils/vite\"\r\nimport { Command } from \"commander\"\r\nimport { resolve } from \"path\"\r\nimport { actionWithBackup } from \"./utils/actionWithBackup\"\r\nimport { addStartScript } from \"./utils/addStartScript\"\r\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\r\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\r\nimport { getHeaders } from \"./utils/getHeaders\"\r\nimport { readPackageJsonSync } from \"./utils/readPackageJsonSync\"\r\nimport { removeTailwindCssPreflight } from \"./utils/removeTailwindCssPreset\"\r\nimport { replaceAssets } from \"./utils/replaceAssets\"\r\nimport { setGlobal } from \"./utils/setGlobal\"\r\nimport { upgradeRsbuild } from \"./utils/upgradeRsbuild\"\r\nimport { upgradeWorkspaceDependceny } from \"./utils/upgradeWorkspaceDependceny\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram\r\n .command(\"eslint\")\r\n .description(\"删除 ESLint 相关配置\")\r\n .action(actionWithBackup(removeESLint, getCommitMessage(CommitType.feature, \"删除 ESLint 相关配置\")))\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置\")\r\n .action(actionWithBackup(addPrettier, getCommitMessage(CommitType.feature, \"添加 prettier 配置文件\")))\r\n\r\nprogram\r\n .command(\"vite\")\r\n .description(\"初始化 vite 配置\")\r\n .action(actionWithBackup(vite, getCommitMessage(CommitType.feature, \"初始化 vite 配置\")))\r\n\r\nprogram\r\n .command(\"rsbuild\")\r\n .description(\"初始化 rsbuild 配置\")\r\n .action(actionWithBackup(rsbuild, getCommitMessage(CommitType.feature, \"初始化 rsbuild 配置\")))\r\n\r\nprogram\r\n .command(\"next\")\r\n .description(\"初始化 next 配置\")\r\n .action(actionWithBackup(next, getCommitMessage(CommitType.feature, \"初始化 next 配置\")))\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置\")\r\n .action(actionWithBackup(tailwind, getCommitMessage(CommitType.feature, \"添加 tailwind 配置\")))\r\n\r\nprogram\r\n .command(\"remove-comment\")\r\n .description(\"删除文件注释\")\r\n .argument(\"path\", \"文件路径\")\r\n .action(actionWithBackup(removeComment, getCommitMessage(CommitType.feature, \"删除文件注释\")))\r\n\r\nprogram\r\n .command(\"father\")\r\n .alias(\"fs\")\r\n .description(\"初始化 father 项目配置\")\r\n .action(actionWithBackup(setFatherConfig, getCommitMessage(CommitType.feature, \"初始化 father 项目配置\")))\r\n\r\nprogram\r\n .command(\"upgrade-dependency\")\r\n .alias(\"ud\")\r\n .description(\"升级项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async optios => {\r\n setGlobal(optios)\r\n await actionWithBackup(() => upgradeDependency())()\r\n })\r\n\r\nprogram\r\n .command(\"upgrade-workspace-dependency\")\r\n .alias(\"uwd\")\r\n .description(\"升级工作区项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .argument(\"[dir]\", \"项目目录\", \"packages\")\r\n .action(async (dir, options) => {\r\n setGlobal(options)\r\n await upgradeWorkspaceDependceny(dir)\r\n })\r\n\r\nprogram.command(\"registry\").description(\"设置 npm registry\").action(setRegistry)\r\n\r\nprogram\r\n .command(\"sort-package-json\")\r\n .alias(\"spj\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(actionWithBackup(sortPackageJson, getCommitMessage(CommitType.feature, \"对 package.json 中的依赖进行排序\")))\r\n\r\nprogram\r\n .command(\"arrow-to-function\")\r\n .alias(\"a2f\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(actionWithBackup(arrowToFunction, getCommitMessage(CommitType.feature, \"将箭头函数组件转换为函数组件\")))\r\n\r\nprogram\r\n .command(\"interface-to-type\")\r\n .alias(\"i2t\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(actionWithBackup(interfaceToType, getCommitMessage(CommitType.feature, \"将 interface 转换为 type\")))\r\n\r\nprogram\r\n .command(\"gitignore\")\r\n .description(\"添加 .gitignore 配置\")\r\n .action(actionWithBackup(addGitignore, getCommitMessage(CommitType.feature, \"添加 .gitignore 配置\")))\r\n\r\nprogram.command(\"git-proxy\").alias(\"gp\").description(\"设置 git 代理\").action(setGitProxy)\r\n\r\nprogram.command(\"shell-proxy\").alias(\"sp\").description(\"设置 Shell 代理\").action(setShellProxy)\r\n\r\nprogram.command(\"download-software\").alias(\"ds\").description(\"下载最新版软件\").action(downloadLatestSoftware)\r\n\r\nprogram.command(\"vscode\").alias(\"vsc\").description(\"同步 VS Code 配置\").action(syncVscode)\r\n\r\nprogram.command(\"kill-port\").description(\"根据端口号杀死进程\").argument(\"port\", \"端口号\").action(killProcessByPort)\r\n\r\nprogram.command(\"rm-git\").argument(\"path\", \"要移除的文件或文件夹\").action(removeFileOrFolderFromGit)\r\n\r\nprogram.command(\"npm-download\").alias(\"nd\").description(\"下载 npm 包\").argument(\"name\", \"包名\").action(downloadNpm)\r\n\r\nprogram\r\n .command(\"prisma\")\r\n .description(\"添加 prisma 配置\")\r\n .action(actionWithBackup(addPrisma, getCommitMessage(CommitType.feature, \"添加 prisma 配置\")))\r\n\r\nprogram.command(\"prisma-generate\").alias(\"pg\").description(\"生成 prisma client\").action(generatePrisma)\r\n\r\nprogram\r\n .command(\"antd\")\r\n .description(\"添加 antd 配置\")\r\n .action(actionWithBackup(addAntd, getCommitMessage(CommitType.feature, \"添加 antd 配置\")))\r\n\r\nprogram\r\n .command(\"init\")\r\n .description(\"初始化项目\")\r\n .action(actionWithBackup(initProject, getCommitMessage(CommitType.feature, \"初始化项目\")))\r\n\r\nprogram.command(\"tsc\").description(\"类型检查\").action(checkType)\r\n\r\nprogram.command(\"beta-version\").alias(\"bv\").description(\"设置版本号\").action(betaVersion)\r\n\r\nprogram\r\n .command(\"reinstall\")\r\n .alias(\"ri\")\r\n .description(\"重新安装依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .action(async options => {\r\n setGlobal(options)\r\n reinstall()\r\n })\r\n\r\nprogram.command(\"snippet\").alias(\"sn\").description(\"生成 vscode snippet\").argument(\"path\", \"文件路径\").action(code2Snippet)\r\n\r\nprogram.command(\"add-alias\").alias(\"aa\").description(\"添加路径别名\").action(actionWithBackup(addFolderPathAlias))\r\n\r\nprogram.command(\"replace-alias\").alias(\"ra\").description(\"替换路径别名\").action(actionWithBackup(replacePathAlias))\r\n\r\nprogram.command(\"pnpm\").description(\"设置 pnpm 配置\").action(pnpm)\r\n\r\nprogram.command(\"rollup\").description(\"rollup 打包\").action(rollup)\r\n\r\nprogram.command(\"browserlistrc\").alias(\"blr\").description(\"添加 browserlistrc 配置\").action(createBrowserlistrc)\r\n\r\nprogram\r\n .command(\"asset\")\r\n .description(\"替换文件中的资源地址\")\r\n .argument(\"input\", \"静态文件夹路径\")\r\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\r\n .option(\"-o, --output <output>\", \"输出文件夹\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action((input, { proxy, base, output }) => replaceAssets({ base, input, proxy, output }))\r\n\r\nprogram\r\n .command(\"upgrade-rsbuild\")\r\n .alias(\"ur\")\r\n .description(\"升级 rsbuild\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async options => {\r\n setGlobal(options)\r\n await actionWithBackup(() => upgradeRsbuild())()\r\n })\r\n\r\nprogram\r\n .command(\"add-start-script\")\r\n .alias(\"ass\")\r\n .argument(\"type\", \"启动脚本类型:express、next\")\r\n .option(\"-p, --port <port>\", \"端口地址\")\r\n .option(\"-c, --core <core>\", \"实例数\")\r\n .option(\"-h, --hostname <hostname>\", \"主机名\")\r\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\r\n .description(\"添加 express 启动脚本\")\r\n .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))\r\n\r\nprogram\r\n .command(\"removeTailwindCssPreflight\")\r\n .alias(\"rtp\")\r\n .description(\"删除 tailwindcss 的 preflight.css 中的 img 和 video 样式\")\r\n .action(actionWithBackup(() => removeTailwindCssPreflight()))\r\n\r\nprogram.command(\"headers\").description(\"将浏览器中直接复制的 headers 转换为对象\").action(getHeaders)\r\n\r\nprogram.parse()\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { CommitType } from \"@constant/index\"\r\nimport { addAntd } from \"@utils/addAntd\"\r\nimport { addGitignore } from \"@utils/addGitignore\"\r\nimport { addFolderPathAlias, replacePathAlias } from \"@utils/addPathAlias\"\r\nimport { addPrettier } from \"@utils/addPrettier\"\r\nimport { addPrisma } from \"@utils/addPrisma\"\r\nimport { arrowToFunction } from \"@utils/arrowToFunction\"\r\nimport { betaVersion } from \"@utils/betaVersion\"\r\nimport { checkType } from \"@utils/checkType\"\r\nimport { code2Snippet } from \"@utils/code2Snippet\"\r\nimport { downloadLatestSoftware } from \"@utils/downloadLatestSoftware\"\r\nimport { downloadNpm } from \"@utils/downloadNpm\"\r\nimport { generatePrisma } from \"@utils/generatePrisma\"\r\nimport { initProject } from \"@utils/initProject\"\r\nimport { interfaceToType } from \"@utils/interfaceToType\"\r\nimport { killProcessByPort } from \"@utils/killProcessByPort\"\r\nimport { next } from \"@utils/next\"\r\nimport { pnpm } from \"@utils/pnpm\"\r\nimport { reinstall } from \"@utils/reinstall\"\r\nimport { removeComment } from \"@utils/removeComment\"\r\nimport { removeESLint } from \"@utils/removeESLint\"\r\nimport { removeFileOrFolderFromGit } from \"@utils/removeFileOrFolderFromGit\"\r\nimport { rollup } from \"@utils/rollup\"\r\nimport { rsbuild } from \"@utils/rsbuild\"\r\nimport { setFatherConfig } from \"@utils/setFatherConfig\"\r\nimport { setGitProxy } from \"@utils/setGitProxy\"\r\nimport { setRegistry } from \"@utils/setRegistry\"\r\nimport { setShellProxy } from \"@utils/setShellProxy\"\r\nimport { sortPackageJson } from \"@utils/sortPackageJson\"\r\nimport { syncVscode } from \"@utils/syncVscode\"\r\nimport { tailwind } from \"@utils/tailwind\"\r\nimport { upgradeDependency } from \"@utils/upgradeDependency\"\r\nimport { vite } from \"@utils/vite\"\r\nimport { Command } from \"commander\"\r\nimport { resolve } from \"path\"\r\nimport { actionWithBackup } from \"./utils/actionWithBackup\"\r\nimport { addStartScript } from \"./utils/addStartScript\"\r\nimport { addZipDist } from \"./utils/addZipDist\"\r\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\r\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\r\nimport { getHeaders } from \"./utils/getHeaders\"\r\nimport { readPackageJsonSync } from \"./utils/readPackageJsonSync\"\r\n\r\nimport { replaceAssets } from \"./utils/replaceAssets\"\r\nimport { setGlobal } from \"./utils/setGlobal\"\r\nimport { upgradeRsbuild } from \"./utils/upgradeRsbuild\"\r\nimport { upgradeWorkspaceDependceny } from \"./utils/upgradeWorkspaceDependceny\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram\r\n .command(\"eslint\")\r\n .description(\"删除 ESLint 相关配置\")\r\n .action(actionWithBackup(removeESLint, getCommitMessage(CommitType.feature, \"删除 ESLint 相关配置\")))\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置\")\r\n .action(actionWithBackup(addPrettier, getCommitMessage(CommitType.feature, \"添加 prettier 配置文件\")))\r\n\r\nprogram\r\n .command(\"vite\")\r\n .description(\"初始化 vite 配置\")\r\n .action(actionWithBackup(vite, getCommitMessage(CommitType.feature, \"初始化 vite 配置\")))\r\n\r\nprogram\r\n .command(\"rsbuild\")\r\n .description(\"初始化 rsbuild 配置\")\r\n .action(actionWithBackup(rsbuild, getCommitMessage(CommitType.feature, \"初始化 rsbuild 配置\")))\r\n\r\nprogram\r\n .command(\"next\")\r\n .description(\"初始化 next 配置\")\r\n .action(actionWithBackup(next, getCommitMessage(CommitType.feature, \"初始化 next 配置\")))\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置\")\r\n .action(actionWithBackup(tailwind, getCommitMessage(CommitType.feature, \"添加 tailwind 配置\")))\r\n\r\nprogram\r\n .command(\"remove-comment\")\r\n .description(\"删除文件注释\")\r\n .argument(\"path\", \"文件路径\")\r\n .action(actionWithBackup(removeComment, getCommitMessage(CommitType.feature, \"删除文件注释\")))\r\n\r\nprogram\r\n .command(\"father\")\r\n .alias(\"fs\")\r\n .description(\"初始化 father 项目配置\")\r\n .action(actionWithBackup(setFatherConfig, getCommitMessage(CommitType.feature, \"初始化 father 项目配置\")))\r\n\r\nprogram\r\n .command(\"upgrade-dependency\")\r\n .alias(\"ud\")\r\n .description(\"升级项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async optios => {\r\n setGlobal(optios)\r\n await actionWithBackup(() => upgradeDependency())()\r\n })\r\n\r\nprogram\r\n .command(\"upgrade-workspace-dependency\")\r\n .alias(\"uwd\")\r\n .description(\"升级工作区项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .argument(\"[dir]\", \"项目目录\", \"packages\")\r\n .action(async (dir, options) => {\r\n setGlobal(options)\r\n await upgradeWorkspaceDependceny(dir)\r\n })\r\n\r\nprogram.command(\"registry\").description(\"设置 npm registry\").action(setRegistry)\r\n\r\nprogram\r\n .command(\"sort-package-json\")\r\n .alias(\"spj\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(actionWithBackup(sortPackageJson, getCommitMessage(CommitType.feature, \"对 package.json 中的依赖进行排序\")))\r\n\r\nprogram\r\n .command(\"arrow-to-function\")\r\n .alias(\"a2f\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(actionWithBackup(arrowToFunction, getCommitMessage(CommitType.feature, \"将箭头函数组件转换为函数组件\")))\r\n\r\nprogram\r\n .command(\"interface-to-type\")\r\n .alias(\"i2t\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(actionWithBackup(interfaceToType, getCommitMessage(CommitType.feature, \"将 interface 转换为 type\")))\r\n\r\nprogram\r\n .command(\"gitignore\")\r\n .description(\"添加 .gitignore 配置\")\r\n .action(actionWithBackup(addGitignore, getCommitMessage(CommitType.feature, \"添加 .gitignore 配置\")))\r\n\r\nprogram.command(\"git-proxy\").alias(\"gp\").description(\"设置 git 代理\").action(setGitProxy)\r\n\r\nprogram.command(\"shell-proxy\").alias(\"sp\").description(\"设置 Shell 代理\").action(setShellProxy)\r\n\r\nprogram.command(\"download-software\").alias(\"ds\").description(\"下载最新版软件\").action(downloadLatestSoftware)\r\n\r\nprogram.command(\"vscode\").alias(\"vsc\").description(\"同步 VS Code 配置\").action(syncVscode)\r\n\r\nprogram.command(\"kill-port\").description(\"根据端口号杀死进程\").argument(\"port\", \"端口号\").action(killProcessByPort)\r\n\r\nprogram.command(\"rm-git\").argument(\"path\", \"要移除的文件或文件夹\").action(removeFileOrFolderFromGit)\r\n\r\nprogram.command(\"npm-download\").alias(\"nd\").description(\"下载 npm 包\").argument(\"name\", \"包名\").action(downloadNpm)\r\n\r\nprogram\r\n .command(\"prisma\")\r\n .description(\"添加 prisma 配置\")\r\n .action(actionWithBackup(addPrisma, getCommitMessage(CommitType.feature, \"添加 prisma 配置\")))\r\n\r\nprogram.command(\"prisma-generate\").alias(\"pg\").description(\"生成 prisma client\").action(generatePrisma)\r\n\r\nprogram\r\n .command(\"antd\")\r\n .description(\"添加 antd 配置\")\r\n .action(actionWithBackup(addAntd, getCommitMessage(CommitType.feature, \"添加 antd 配置\")))\r\n\r\nprogram\r\n .command(\"init\")\r\n .description(\"初始化项目\")\r\n .action(actionWithBackup(initProject, getCommitMessage(CommitType.feature, \"初始化项目\")))\r\n\r\nprogram.command(\"tsc\").description(\"类型检查\").action(checkType)\r\n\r\nprogram.command(\"beta-version\").alias(\"bv\").description(\"设置版本号\").action(betaVersion)\r\n\r\nprogram\r\n .command(\"reinstall\")\r\n .alias(\"ri\")\r\n .description(\"重新安装依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .action(async options => {\r\n setGlobal(options)\r\n reinstall()\r\n })\r\n\r\nprogram.command(\"snippet\").alias(\"sn\").description(\"生成 vscode snippet\").argument(\"path\", \"文件路径\").action(code2Snippet)\r\n\r\nprogram.command(\"add-alias\").alias(\"aa\").description(\"添加路径别名\").action(actionWithBackup(addFolderPathAlias))\r\n\r\nprogram.command(\"replace-alias\").alias(\"ra\").description(\"替换路径别名\").action(actionWithBackup(replacePathAlias))\r\n\r\nprogram.command(\"pnpm\").description(\"设置 pnpm 配置\").action(pnpm)\r\n\r\nprogram.command(\"rollup\").description(\"rollup 打包\").action(rollup)\r\n\r\nprogram.command(\"browserlistrc\").alias(\"blr\").description(\"添加 browserlistrc 配置\").action(createBrowserlistrc)\r\n\r\nprogram\r\n .command(\"asset\")\r\n .description(\"替换文件中的资源地址\")\r\n .argument(\"input\", \"静态文件夹路径\")\r\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\r\n .option(\"-o, --output <output>\", \"输出文件夹\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action((input, { proxy, base, output }) => replaceAssets({ base, input, proxy, output }))\r\n\r\nprogram\r\n .command(\"upgrade-rsbuild\")\r\n .alias(\"ur\")\r\n .description(\"升级 rsbuild\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async options => {\r\n setGlobal(options)\r\n await actionWithBackup(() => upgradeRsbuild())()\r\n })\r\n\r\nprogram\r\n .command(\"add-start-script\")\r\n .alias(\"ass\")\r\n .argument(\"type\", \"启动脚本类型:express、next\")\r\n .option(\"-p, --port <port>\", \"端口地址\")\r\n .option(\"-c, --core <core>\", \"实例数\")\r\n .option(\"-h, --hostname <hostname>\", \"主机名\")\r\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\r\n .description(\"添加 express 启动脚本\")\r\n .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))\r\n\r\nprogram.command(\"headers\").description(\"将浏览器中直接复制的 headers 转换为对象\").action(getHeaders)\r\n\r\nprogram\r\n .command(\"add-zip-dist\")\r\n .alias(\"azd\")\r\n .description(\"添加将 dist 压缩的脚本\")\r\n .action(actionWithBackup(() => addZipDist({ install: true })))\r\n\r\nprogram.parse()\r\n"],
5
+ "mappings": ";;;AAEA,sBAA2B;AAC3B,qBAAwB;AACxB,0BAA6B;AAC7B,0BAAqD;AACrD,yBAA4B;AAC5B,uBAA0B;AAC1B,6BAAgC;AAChC,yBAA4B;AAC5B,uBAA0B;AAC1B,0BAA6B;AAC7B,oCAAuC;AACvC,yBAA4B;AAC5B,4BAA+B;AAC/B,yBAA4B;AAC5B,6BAAgC;AAChC,+BAAkC;AAClC,kBAAqB;AACrB,kBAAqB;AACrB,uBAA0B;AAC1B,2BAA8B;AAC9B,0BAA6B;AAC7B,uCAA0C;AAC1C,oBAAuB;AACvB,qBAAwB;AACxB,6BAAgC;AAChC,yBAA4B;AAC5B,yBAA4B;AAC5B,2BAA8B;AAC9B,6BAAgC;AAChC,wBAA2B;AAC3B,sBAAyB;AACzB,+BAAkC;AAClC,kBAAqB;AACrB,uBAAwB;AACxB,kBAAwB;AACxB,8BAAiC;AACjC,4BAA+B;AAC/B,wBAA2B;AAC3B,iCAAoC;AACpC,8BAAiC;AACjC,wBAA2B;AAC3B,iCAAoC;AAEpC,2BAA8B;AAC9B,uBAA0B;AAC1B,4BAA+B;AAC/B,wCAA2C;AAE3C,IAAM,UAAU,IAAI,yBAAQ;AAE5B,IAAM,UAAM,oDAAoB,qBAAQ,WAAW,KAAK,CAAC;AAEzD,QAAQ,KAAK,MAAM,EAAE,QAAQ,IAAI,OAAO;AAExC,QACK,QAAQ,QAAQ,EAChB,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,sCAAc,0CAAiB,2BAAW,SAAS,gBAAgB,CAAC,CAAC;AAElG,QACK,QAAQ,UAAU,EAClB,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,oCAAa,0CAAiB,2BAAW,SAAS,kBAAkB,CAAC,CAAC;AAEnG,QACK,QAAQ,MAAM,EACd,YAAY,aAAa,EACzB,WAAO,0CAAiB,sBAAM,0CAAiB,2BAAW,SAAS,aAAa,CAAC,CAAC;AAEvF,QACK,QAAQ,SAAS,EACjB,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,4BAAS,0CAAiB,2BAAW,SAAS,gBAAgB,CAAC,CAAC;AAE7F,QACK,QAAQ,MAAM,EACd,YAAY,aAAa,EACzB,WAAO,0CAAiB,sBAAM,0CAAiB,2BAAW,SAAS,aAAa,CAAC,CAAC;AAEvF,QACK,QAAQ,UAAU,EAClB,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,8BAAU,0CAAiB,2BAAW,SAAS,gBAAgB,CAAC,CAAC;AAE9F,QACK,QAAQ,gBAAgB,EACxB,YAAY,QAAQ,EACpB,SAAS,QAAQ,MAAM,EACvB,WAAO,0CAAiB,wCAAe,0CAAiB,2BAAW,SAAS,QAAQ,CAAC,CAAC;AAE3F,QACK,QAAQ,QAAQ,EAChB,MAAM,IAAI,EACV,YAAY,iBAAiB,EAC7B,WAAO,0CAAiB,4CAAiB,0CAAiB,2BAAW,SAAS,iBAAiB,CAAC,CAAC;AAEtG,QACK,QAAQ,oBAAoB,EAC5B,MAAM,IAAI,EACV,YAAY,QAAQ,EACpB,OAAO,6BAA6B,wCAAwC,EAC5E,OAAO,eAAe,QAAQ,EAC9B,OAAO,OAAM,WAAU;AACpB,kCAAU,MAAM;AAChB,YAAM,0CAAiB,UAAM,4CAAkB,CAAC,EAAE;AACtD,CAAC;AAEL,QACK,QAAQ,8BAA8B,EACtC,MAAM,KAAK,EACX,YAAY,WAAW,EACvB,OAAO,6BAA6B,wCAAwC,EAC5E,OAAO,eAAe,QAAQ,EAC9B,SAAS,SAAS,QAAQ,UAAU,EACpC,OAAO,OAAO,KAAK,YAAY;AAC5B,kCAAU,OAAO;AACjB,YAAM,8DAA2B,GAAG;AACxC,CAAC;AAEL,QAAQ,QAAQ,UAAU,EAAE,YAAY,iBAAiB,EAAE,OAAO,8BAAW;AAE7E,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,yBAAyB,EACrC,WAAO,0CAAiB,4CAAiB,0CAAiB,2BAAW,SAAS,yBAAyB,CAAC,CAAC;AAE9G,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,4CAAiB,0CAAiB,2BAAW,SAAS,gBAAgB,CAAC,CAAC;AAErG,QACK,QAAQ,mBAAmB,EAC3B,MAAM,KAAK,EACX,YAAY,sBAAsB,EAClC,WAAO,0CAAiB,4CAAiB,0CAAiB,2BAAW,SAAS,sBAAsB,CAAC,CAAC;AAE3G,QACK,QAAQ,WAAW,EACnB,YAAY,kBAAkB,EAC9B,WAAO,0CAAiB,sCAAc,0CAAiB,2BAAW,SAAS,kBAAkB,CAAC,CAAC;AAEpG,QAAQ,QAAQ,WAAW,EAAE,MAAM,IAAI,EAAE,YAAY,WAAW,EAAE,OAAO,8BAAW;AAEpF,QAAQ,QAAQ,aAAa,EAAE,MAAM,IAAI,EAAE,YAAY,aAAa,EAAE,OAAO,kCAAa;AAE1F,QAAQ,QAAQ,mBAAmB,EAAE,MAAM,IAAI,EAAE,YAAY,SAAS,EAAE,OAAO,oDAAsB;AAErG,QAAQ,QAAQ,QAAQ,EAAE,MAAM,KAAK,EAAE,YAAY,eAAe,EAAE,OAAO,4BAAU;AAErF,QAAQ,QAAQ,WAAW,EAAE,YAAY,WAAW,EAAE,SAAS,QAAQ,KAAK,EAAE,OAAO,0CAAiB;AAEtG,QAAQ,QAAQ,QAAQ,EAAE,SAAS,QAAQ,YAAY,EAAE,OAAO,0DAAyB;AAEzF,QAAQ,QAAQ,cAAc,EAAE,MAAM,IAAI,EAAE,YAAY,UAAU,EAAE,SAAS,QAAQ,IAAI,EAAE,OAAO,8BAAW;AAE7G,QACK,QAAQ,QAAQ,EAChB,YAAY,cAAc,EAC1B,WAAO,0CAAiB,gCAAW,0CAAiB,2BAAW,SAAS,cAAc,CAAC,CAAC;AAE7F,QAAQ,QAAQ,iBAAiB,EAAE,MAAM,IAAI,EAAE,YAAY,kBAAkB,EAAE,OAAO,oCAAc;AAEpG,QACK,QAAQ,MAAM,EACd,YAAY,YAAY,EACxB,WAAO,0CAAiB,4BAAS,0CAAiB,2BAAW,SAAS,YAAY,CAAC,CAAC;AAEzF,QACK,QAAQ,MAAM,EACd,YAAY,OAAO,EACnB,WAAO,0CAAiB,oCAAa,0CAAiB,2BAAW,SAAS,OAAO,CAAC,CAAC;AAExF,QAAQ,QAAQ,KAAK,EAAE,YAAY,MAAM,EAAE,OAAO,0BAAS;AAE3D,QAAQ,QAAQ,cAAc,EAAE,MAAM,IAAI,EAAE,YAAY,OAAO,EAAE,OAAO,8BAAW;AAEnF,QACK,QAAQ,WAAW,EACnB,MAAM,IAAI,EACV,YAAY,QAAQ,EACpB,OAAO,6BAA6B,wCAAwC,EAC5E,OAAO,OAAM,YAAW;AACrB,kCAAU,OAAO;AACjB,kCAAU;AACd,CAAC;AAEL,QAAQ,QAAQ,SAAS,EAAE,MAAM,IAAI,EAAE,YAAY,mBAAmB,EAAE,SAAS,QAAQ,MAAM,EAAE,OAAO,gCAAY;AAEpH,QAAQ,QAAQ,WAAW,EAAE,MAAM,IAAI,EAAE,YAAY,QAAQ,EAAE,WAAO,0CAAiB,sCAAkB,CAAC;AAE1G,QAAQ,QAAQ,eAAe,EAAE,MAAM,IAAI,EAAE,YAAY,QAAQ,EAAE,WAAO,0CAAiB,oCAAgB,CAAC;AAE5G,QAAQ,QAAQ,MAAM,EAAE,YAAY,YAAY,EAAE,OAAO,gBAAI;AAE7D,QAAQ,QAAQ,QAAQ,EAAE,YAAY,WAAW,EAAE,OAAO,oBAAM;AAEhE,QAAQ,QAAQ,eAAe,EAAE,MAAM,KAAK,EAAE,YAAY,qBAAqB,EAAE,OAAO,8CAAmB;AAE3G,QACK,QAAQ,OAAO,EACf,YAAY,YAAY,EACxB,SAAS,SAAS,SAAS,EAC3B,OAAO,qBAAqB,cAAc,EAC1C,OAAO,yBAAyB,OAAO,EACvC,OAAO,eAAe,QAAQ,EAC9B,OAAO,CAAC,OAAO,EAAE,OAAO,MAAM,OAAO,UAAM,oCAAc,EAAE,MAAM,OAAO,OAAO,OAAO,CAAC,CAAC;AAE7F,QACK,QAAQ,iBAAiB,EACzB,MAAM,IAAI,EACV,YAAY,YAAY,EACxB,OAAO,6BAA6B,wCAAwC,EAC5E,OAAO,eAAe,QAAQ,EAC9B,OAAO,OAAM,YAAW;AACrB,kCAAU,OAAO;AACjB,YAAM,0CAAiB,UAAM,sCAAe,CAAC,EAAE;AACnD,CAAC;AAEL,QACK,QAAQ,kBAAkB,EAC1B,MAAM,KAAK,EACX,SAAS,QAAQ,qBAAqB,EACtC,OAAO,qBAAqB,MAAM,EAClC,OAAO,qBAAqB,KAAK,EACjC,OAAO,6BAA6B,KAAK,EACzC,OAAO,6BAA6B,MAAM,EAC1C,YAAY,iBAAiB,EAC7B,OAAO,OAAO,MAAM,EAAE,MAAM,MAAM,QAAQ,UAAM,0CAAiB,oCAAc,EAAE,EAAE,MAAM,MAAM,MAAM,QAAQ,CAAC,CAAC;AAEpH,QAAQ,QAAQ,SAAS,EAAE,YAAY,0BAA0B,EAAE,OAAO,4BAAU;AAEpF,QACK,QAAQ,cAAc,EACtB,MAAM,KAAK,EACX,YAAY,gBAAgB,EAC5B,WAAO,0CAAiB,UAAM,8BAAW,EAAE,SAAS,KAAK,CAAC,CAAC,CAAC;AAEjE,QAAQ,MAAM;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,5 @@
1
+ type AddZipDistConfig = {
2
+ install?: boolean;
3
+ };
4
+ export declare function addZipDist({ install }?: AddZipDistConfig): Promise<string>;
5
+ export {};
@@ -0,0 +1,64 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __export = (target, all) => {
6
+ for (var name in all)
7
+ __defProp(target, name, { get: all[name], enumerable: true });
8
+ };
9
+ var __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from === "object" || typeof from === "function") {
11
+ for (let key of __getOwnPropNames(from))
12
+ if (!__hasOwnProp.call(to, key) && key !== except)
13
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
+ }
15
+ return to;
16
+ };
17
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
+
19
+ // src/utils/addZipDist.ts
20
+ var addZipDist_exports = {};
21
+ __export(addZipDist_exports, {
22
+ addZipDist: () => addZipDist
23
+ });
24
+ module.exports = __toCommonJS(addZipDist_exports);
25
+ var import_promises = require("fs/promises");
26
+ var import_addDependency = require("./addDependency");
27
+ var import_installDependceny = require("./installDependceny");
28
+ var import_readPackageJson = require("./readPackageJson");
29
+ var import_writePackageJson = require("./writePackageJson");
30
+ var import_getCommitMessage = require("./getCommitMessage");
31
+ var import_constant = require("../constant");
32
+ var zipDistContent = `// @ts-check
33
+ import { rm } from "fs/promises"
34
+ import { zip } from "soda-nodejs"
35
+
36
+ async function main() {
37
+ await rm("dist.zip", { force: true })
38
+ await zip({
39
+ input: "dist",
40
+ output: "dist.zip"
41
+ })
42
+ }
43
+
44
+ main()
45
+ `;
46
+ async function addZipDist({ install } = {}) {
47
+ await (0, import_addDependency.addDependency)({
48
+ package: ["soda-nodejs"],
49
+ type: "devDependencies"
50
+ });
51
+ await (0, import_promises.mkdir)("scripts", { recursive: true });
52
+ await (0, import_promises.writeFile)("scripts/zipDist.mjs", zipDistContent, "utf-8");
53
+ const packageJson = await (0, import_readPackageJson.readPackageJson)();
54
+ packageJson.scripts.build = `${packageJson.scripts.build} && node scripts/zipDist.mjs`;
55
+ await (0, import_writePackageJson.writePackageJson)({ data: packageJson });
56
+ if (install)
57
+ await (0, import_installDependceny.installDependceny)();
58
+ return (0, import_getCommitMessage.getCommitMessage)(import_constant.CommitType.feature, "添加压缩脚本");
59
+ }
60
+ // Annotate the CommonJS export names for ESM import in node:
61
+ 0 && (module.exports = {
62
+ addZipDist
63
+ });
64
+ //# sourceMappingURL=addZipDist.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils/addZipDist.ts"],
4
+ "sourcesContent": ["import { mkdir, writeFile } from \"fs/promises\"\r\nimport { addDependency } from \"./addDependency\"\r\nimport { installDependceny } from \"./installDependceny\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\nimport { writePackageJson } from \"./writePackageJson\"\r\nimport { getCommitMessage } from \"./getCommitMessage\"\r\nimport { CommitType } from \"@src/constant\"\r\n\r\nconst zipDistContent = `// @ts-check\r\nimport { rm } from \"fs/promises\"\r\nimport { zip } from \"soda-nodejs\"\r\n\r\nasync function main() {\r\n await rm(\"dist.zip\", { force: true })\r\n await zip({\r\n input: \"dist\",\r\n output: \"dist.zip\"\r\n })\r\n}\r\n\r\nmain()\r\n`\r\n\r\ntype AddZipDistConfig = {\r\n install?: boolean\r\n}\r\n\r\nexport async function addZipDist({ install }: AddZipDistConfig = {}) {\r\n await addDependency({\r\n package: [\"soda-nodejs\"],\r\n type: \"devDependencies\"\r\n })\r\n await mkdir(\"scripts\", { recursive: true })\r\n await writeFile(\"scripts/zipDist.mjs\", zipDistContent, \"utf-8\")\r\n const packageJson = await readPackageJson()\r\n packageJson.scripts.build = `${packageJson.scripts.build} && node scripts/zipDist.mjs`\r\n await writePackageJson({ data: packageJson })\r\n if (install) await installDependceny()\r\n return getCommitMessage(CommitType.feature, \"添加压缩脚本\")\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAiC;AACjC,2BAA8B;AAC9B,+BAAkC;AAClC,6BAAgC;AAChC,8BAAiC;AACjC,8BAAiC;AACjC,sBAA2B;AAE3B,IAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAmBvB,eAAsB,WAAW,EAAE,QAAQ,IAAsB,CAAC,GAAG;AACjE,YAAM,oCAAc;AAAA,IAChB,SAAS,CAAC,aAAa;AAAA,IACvB,MAAM;AAAA,EACV,CAAC;AACD,YAAM,uBAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,YAAM,2BAAU,uBAAuB,gBAAgB,OAAO;AAC9D,QAAM,cAAc,UAAM,wCAAgB;AAC1C,cAAY,QAAQ,QAAQ,GAAG,YAAY,QAAQ;AACnD,YAAM,0CAAiB,EAAE,MAAM,YAAY,CAAC;AAC5C,MAAI;AAAS,cAAM,4CAAkB;AACrC,aAAO,0CAAiB,2BAAW,SAAS,QAAQ;AACxD;",
6
+ "names": []
7
+ }
@@ -36,37 +36,37 @@ var import_consola = __toESM(require("consola"));
36
36
  var import_promises = require("fs/promises");
37
37
  var import_path = require("path");
38
38
  var import_soda_nodejs = require("soda-nodejs");
39
+ var import_getPackageVersionInDependcy = require("./getPackageVersionInDependcy");
39
40
  async function downloadNpm(name) {
40
41
  import_consola.default.start(`开始下载 ${name}`);
41
- const folder = `.${name}`;
42
- const file = `${name}.zip`;
42
+ const folder = `${name}-cache`;
43
43
  const dir = await (0, import_promises.readdir)(".");
44
44
  if (dir.includes(folder)) {
45
45
  import_consola.default.warn("文件夹已存在");
46
46
  throw new Error("文件夹已存在");
47
47
  }
48
- if (dir.includes(file)) {
49
- import_consola.default.warn("文件已存在");
50
- throw new Error("文件已存在");
51
- }
52
48
  await (0, import_promises.mkdir)(folder, { recursive: true });
53
49
  await (0, import_soda_nodejs.execAsync)(`npm init -y`, { cwd: folder });
54
50
  await (0, import_soda_nodejs.execAsync)(`npm install ${name}`, { cwd: folder });
51
+ const version = await (0, import_getPackageVersionInDependcy.getPackageVersionInDependcy)(name, folder);
52
+ const file = `${name}@${version}.zip`;
55
53
  await (0, import_promises.mkdir)((0, import_path.join)(folder, "node_modules", name, "node_modules"));
56
- const dir1 = await (0, import_promises.readdir)((0, import_path.join)(folder, "node_modules"));
57
- for (const d of dir1) {
58
- if (d === name)
54
+ const dir2 = await (0, import_promises.readdir)((0, import_path.join)(folder, "node_modules"));
55
+ for (const item of dir2) {
56
+ if (item === name)
59
57
  continue;
60
- if (d.startsWith(".")) {
61
- await (0, import_promises.rm)((0, import_path.join)(folder, "node_modules", d), { recursive: true });
58
+ if (item.startsWith(".")) {
59
+ await (0, import_promises.rm)((0, import_path.join)(folder, "node_modules", item), { recursive: true });
62
60
  continue;
63
61
  }
64
- await (0, import_promises.rename)((0, import_path.join)(folder, "node_modules", d), (0, import_path.join)(folder, "node_modules", name, "node_modules", d));
62
+ await (0, import_promises.rename)((0, import_path.join)(folder, "node_modules", item), (0, import_path.join)(folder, "node_modules", name, "node_modules", item));
65
63
  }
66
64
  await (0, import_soda_nodejs.zip)({
67
- input: (0, import_path.join)(folder, "node_modules"),
68
- output: file
65
+ input: name,
66
+ output: file,
67
+ cwd: (0, import_path.join)(folder, "node_modules")
69
68
  });
69
+ await (0, import_promises.rename)((0, import_path.join)(folder, "node_modules", file), (0, import_path.join)(file));
70
70
  await (0, import_promises.rm)(folder, { recursive: true });
71
71
  import_consola.default.success(`下载 ${name} 完成`);
72
72
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/downloadNpm.ts"],
4
- "sourcesContent": ["import consola from \"consola\"\r\nimport { mkdir, readdir, rename, rm } from \"fs/promises\"\r\nimport { join } from \"path\"\r\nimport { exit } from \"process\"\r\nimport { execAsync, zip } from \"soda-nodejs\"\r\n\r\nexport async function downloadNpm(name: string) {\r\n consola.start(`开始下载 ${name}`)\r\n const folder = `.${name}`\r\n const file = `${name}.zip`\r\n const dir = await readdir(\".\")\r\n if (dir.includes(folder)) {\r\n consola.warn(\"文件夹已存在\")\r\n throw new Error(\"文件夹已存在\")\r\n }\r\n if (dir.includes(file)) {\r\n consola.warn(\"文件已存在\")\r\n throw new Error(\"文件已存在\")\r\n }\r\n await mkdir(folder, { recursive: true })\r\n await execAsync(`npm init -y`, { cwd: folder })\r\n await execAsync(`npm install ${name}`, { cwd: folder })\r\n await mkdir(join(folder, \"node_modules\", name, \"node_modules\"))\r\n const dir1 = await readdir(join(folder, \"node_modules\"))\r\n for (const d of dir1) {\r\n if (d === name) continue\r\n if (d.startsWith(\".\")) {\r\n await rm(join(folder, \"node_modules\", d), { recursive: true })\r\n continue\r\n }\r\n await rename(join(folder, \"node_modules\", d), join(folder, \"node_modules\", name, \"node_modules\", d))\r\n }\r\n await zip({\r\n input: join(folder, \"node_modules\"),\r\n output: file\r\n })\r\n await rm(folder, { recursive: true })\r\n consola.success(`下载 ${name} 完成`)\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,sBAA2C;AAC3C,kBAAqB;AAErB,yBAA+B;AAE/B,eAAsB,YAAY,MAAc;AAC5C,iBAAAA,QAAQ,MAAM,QAAQ,MAAM;AAC5B,QAAM,SAAS,IAAI;AACnB,QAAM,OAAO,GAAG;AAChB,QAAM,MAAM,UAAM,yBAAQ,GAAG;AAC7B,MAAI,IAAI,SAAS,MAAM,GAAG;AACtB,mBAAAA,QAAQ,KAAK,QAAQ;AACrB,UAAM,IAAI,MAAM,QAAQ;AAAA,EAC5B;AACA,MAAI,IAAI,SAAS,IAAI,GAAG;AACpB,mBAAAA,QAAQ,KAAK,OAAO;AACpB,UAAM,IAAI,MAAM,OAAO;AAAA,EAC3B;AACA,YAAM,uBAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AACvC,YAAM,8BAAU,eAAe,EAAE,KAAK,OAAO,CAAC;AAC9C,YAAM,8BAAU,eAAe,QAAQ,EAAE,KAAK,OAAO,CAAC;AACtD,YAAM,2BAAM,kBAAK,QAAQ,gBAAgB,MAAM,cAAc,CAAC;AAC9D,QAAM,OAAO,UAAM,6BAAQ,kBAAK,QAAQ,cAAc,CAAC;AACvD,aAAW,KAAK,MAAM;AAClB,QAAI,MAAM;AAAM;AAChB,QAAI,EAAE,WAAW,GAAG,GAAG;AACnB,gBAAM,wBAAG,kBAAK,QAAQ,gBAAgB,CAAC,GAAG,EAAE,WAAW,KAAK,CAAC;AAC7D;AAAA,IACJ;AACA,cAAM,4BAAO,kBAAK,QAAQ,gBAAgB,CAAC,OAAG,kBAAK,QAAQ,gBAAgB,MAAM,gBAAgB,CAAC,CAAC;AAAA,EACvG;AACA,YAAM,wBAAI;AAAA,IACN,WAAO,kBAAK,QAAQ,cAAc;AAAA,IAClC,QAAQ;AAAA,EACZ,CAAC;AACD,YAAM,oBAAG,QAAQ,EAAE,WAAW,KAAK,CAAC;AACpC,iBAAAA,QAAQ,QAAQ,MAAM,SAAS;AACnC;",
4
+ "sourcesContent": ["import consola from \"consola\"\r\nimport { mkdir, readdir, rename, rm } from \"fs/promises\"\r\nimport { join } from \"path\"\r\nimport { execAsync, zip } from \"soda-nodejs\"\r\nimport { getPackageVersionInDependcy } from \"./getPackageVersionInDependcy\"\r\n\r\nexport async function downloadNpm(name: string) {\r\n consola.start(`开始下载 ${name}`)\r\n const folder = `${name}-cache`\r\n const dir = await readdir(\".\")\r\n if (dir.includes(folder)) {\r\n consola.warn(\"文件夹已存在\")\r\n throw new Error(\"文件夹已存在\")\r\n }\r\n await mkdir(folder, { recursive: true })\r\n await execAsync(`npm init -y`, { cwd: folder })\r\n await execAsync(`npm install ${name}`, { cwd: folder })\r\n const version = await getPackageVersionInDependcy(name, folder)\r\n const file = `${name}@${version}.zip`\r\n await mkdir(join(folder, \"node_modules\", name, \"node_modules\"))\r\n const dir2 = await readdir(join(folder, \"node_modules\"))\r\n for (const item of dir2) {\r\n if (item === name) continue\r\n if (item.startsWith(\".\")) {\r\n await rm(join(folder, \"node_modules\", item), { recursive: true })\r\n continue\r\n }\r\n await rename(join(folder, \"node_modules\", item), join(folder, \"node_modules\", name, \"node_modules\", item))\r\n }\r\n await zip({\r\n input: name,\r\n output: file,\r\n cwd: join(folder, \"node_modules\")\r\n })\r\n await rename(join(folder, \"node_modules\", file), join(file))\r\n await rm(folder, { recursive: true })\r\n consola.success(`下载 ${name} 完成`)\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,sBAA2C;AAC3C,kBAAqB;AACrB,yBAA+B;AAC/B,yCAA4C;AAE5C,eAAsB,YAAY,MAAc;AAC5C,iBAAAA,QAAQ,MAAM,QAAQ,MAAM;AAC5B,QAAM,SAAS,GAAG;AAClB,QAAM,MAAM,UAAM,yBAAQ,GAAG;AAC7B,MAAI,IAAI,SAAS,MAAM,GAAG;AACtB,mBAAAA,QAAQ,KAAK,QAAQ;AACrB,UAAM,IAAI,MAAM,QAAQ;AAAA,EAC5B;AACA,YAAM,uBAAM,QAAQ,EAAE,WAAW,KAAK,CAAC;AACvC,YAAM,8BAAU,eAAe,EAAE,KAAK,OAAO,CAAC;AAC9C,YAAM,8BAAU,eAAe,QAAQ,EAAE,KAAK,OAAO,CAAC;AACtD,QAAM,UAAU,UAAM,gEAA4B,MAAM,MAAM;AAC9D,QAAM,OAAO,GAAG,QAAQ;AACxB,YAAM,2BAAM,kBAAK,QAAQ,gBAAgB,MAAM,cAAc,CAAC;AAC9D,QAAM,OAAO,UAAM,6BAAQ,kBAAK,QAAQ,cAAc,CAAC;AACvD,aAAW,QAAQ,MAAM;AACrB,QAAI,SAAS;AAAM;AACnB,QAAI,KAAK,WAAW,GAAG,GAAG;AACtB,gBAAM,wBAAG,kBAAK,QAAQ,gBAAgB,IAAI,GAAG,EAAE,WAAW,KAAK,CAAC;AAChE;AAAA,IACJ;AACA,cAAM,4BAAO,kBAAK,QAAQ,gBAAgB,IAAI,OAAG,kBAAK,QAAQ,gBAAgB,MAAM,gBAAgB,IAAI,CAAC;AAAA,EAC7G;AACA,YAAM,wBAAI;AAAA,IACN,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,SAAK,kBAAK,QAAQ,cAAc;AAAA,EACpC,CAAC;AACD,YAAM,4BAAO,kBAAK,QAAQ,gBAAgB,IAAI,OAAG,kBAAK,IAAI,CAAC;AAC3D,YAAM,oBAAG,QAAQ,EAAE,WAAW,KAAK,CAAC;AACpC,iBAAAA,QAAQ,QAAQ,MAAM,SAAS;AACnC;",
6
6
  "names": ["consola"]
7
7
  }
@@ -1 +1 @@
1
- export declare function getPackageVersionInDependcy(packageName: string): Promise<any>;
1
+ export declare function getPackageVersionInDependcy(packageName: string, dir?: string): Promise<string | undefined>;
@@ -23,8 +23,8 @@ __export(getPackageVersionInDependcy_exports, {
23
23
  });
24
24
  module.exports = __toCommonJS(getPackageVersionInDependcy_exports);
25
25
  var import_readPackageJson = require("./readPackageJson");
26
- async function getPackageVersionInDependcy(packageName) {
27
- const packageJson = await (0, import_readPackageJson.readPackageJson)();
26
+ async function getPackageVersionInDependcy(packageName, dir = ".") {
27
+ const packageJson = await (0, import_readPackageJson.readPackageJson)(dir);
28
28
  let version = packageJson.dependencies?.[packageName] ?? packageJson.devDependencies?.[packageName] ?? packageJson.peerDependencies?.[packageName] ?? packageJson.optionalDependencies?.[packageName];
29
29
  if (!version)
30
30
  return void 0;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/getPackageVersionInDependcy.ts"],
4
- "sourcesContent": ["import { readPackageJson } from \"./readPackageJson\"\r\n\r\nexport async function getPackageVersionInDependcy(packageName: string) {\r\n const packageJson = await readPackageJson()\r\n let version = packageJson.dependencies?.[packageName] ?? packageJson.devDependencies?.[packageName] ?? packageJson.peerDependencies?.[packageName] ?? packageJson.optionalDependencies?.[packageName]\r\n if (!version) return undefined\r\n return version.replace(/^\\D+/, \"\")\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAgC;AAEhC,eAAsB,4BAA4B,aAAqB;AACnE,QAAM,cAAc,UAAM,wCAAgB;AAC1C,MAAI,UAAU,YAAY,eAAe,WAAW,KAAK,YAAY,kBAAkB,WAAW,KAAK,YAAY,mBAAmB,WAAW,KAAK,YAAY,uBAAuB,WAAW;AACpM,MAAI,CAAC;AAAS,WAAO;AACrB,SAAO,QAAQ,QAAQ,QAAQ,EAAE;AACrC;",
4
+ "sourcesContent": ["import { readPackageJson } from \"./readPackageJson\"\r\n\r\nexport async function getPackageVersionInDependcy(packageName: string, dir = \".\"): Promise<string | undefined> {\r\n const packageJson = await readPackageJson(dir)\r\n let version = packageJson.dependencies?.[packageName] ?? packageJson.devDependencies?.[packageName] ?? packageJson.peerDependencies?.[packageName] ?? packageJson.optionalDependencies?.[packageName]\r\n if (!version) return undefined\r\n return version.replace(/^\\D+/, \"\")\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,6BAAgC;AAEhC,eAAsB,4BAA4B,aAAqB,MAAM,KAAkC;AAC3G,QAAM,cAAc,UAAM,wCAAgB,GAAG;AAC7C,MAAI,UAAU,YAAY,eAAe,WAAW,KAAK,YAAY,kBAAkB,WAAW,KAAK,YAAY,mBAAmB,WAAW,KAAK,YAAY,uBAAuB,WAAW;AACpM,MAAI,CAAC;AAAS,WAAO;AACrB,SAAO,QAAQ,QAAQ,QAAQ,EAAE;AACrC;",
6
6
  "names": []
7
7
  }
@@ -135,7 +135,10 @@ async function downloadFromWinget({ name, id, dir, filter }) {
135
135
  }
136
136
  return 0;
137
137
  });
138
- const response2 = await fetch2(`https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`, { agent: import_constant.agent });
138
+ const response2 = await fetch2(
139
+ `https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`,
140
+ { agent: import_constant.agent }
141
+ );
139
142
  const yaml = await response2.text();
140
143
  const pkg = import_yaml.default.parse(yaml);
141
144
  const installers = filter ? pkg.Installers.filter(filter) : pkg.Installers;
@@ -210,7 +213,8 @@ async function downloadGeekUninstaller(dir) {
210
213
  await (0, import_promises.rename)((0, import_path.join)(dir, "geek.exe"), (0, import_path.join)(dir, `Geek-${version}-x64.exe`));
211
214
  }
212
215
  async function getVscodeExtInfo(ext) {
213
- const response = await fetch(`https://marketplace.visualstudio.com/items?itemName=${ext}`);
216
+ const { default: fetch2 } = await import("node-fetch");
217
+ const response = await fetch2(`https://marketplace.visualstudio.com/items?itemName=${ext}`, { agent: import_constant.agent });
214
218
  const html = await response.text();
215
219
  const reg = /^(.+?)\.(.+?)$/;
216
220
  const [, author, name] = ext.match(reg);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/index.ts"],
4
- "sourcesContent": ["import { agent } from \"@constant/index\"\r\nimport consola from \"consola\"\r\nimport { createWriteStream, existsSync } from \"fs\"\r\nimport { mkdir, readFile, readdir, rename, rm, writeFile } from \"fs/promises\"\r\nimport { type Headers as NodeFetchHeaders } from \"node-fetch\"\r\nimport { homedir } from \"os\"\r\nimport { join } from \"path\"\r\nimport { Config } from \"prettier\"\r\nimport { execAsync, unzip } from \"soda-nodejs\"\r\nimport { Readable } from \"stream\"\r\nimport YAML from \"yaml\"\r\nimport { retry } from \"./retry\"\r\n\r\nexport function isPositiveInteger(value: any, allowZero = false): value is number {\r\n return Number.isInteger(value) && (allowZero ? value >= 0 : value > 0)\r\n}\r\n\r\nexport const prettierConfig: Config = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 160,\r\n trailingComma: \"none\"\r\n}\r\n\r\nexport function getFilename(headers: Headers | NodeFetchHeaders) {\r\n const disposition = headers.get(\"content-disposition\")\r\n if (!disposition) return undefined\r\n const reg = /filename=(.+?);/\r\n const result = disposition.match(reg)\r\n if (!result) return undefined\r\n return result[1]\r\n}\r\n\r\nexport async function download(url: string, dir: string, filename?: string) {\r\n const { default: fetch } = await import(\"node-fetch\")\r\n const response = await fetch(url, { agent })\r\n filename = getFilename(response.headers) || filename || new URL(url).pathname.split(\"/\").at(-1)!\r\n const writeable = createWriteStream(join(dir, filename))\r\n await new Promise((resolve, reject) => Readable.from(response.body!).pipe(writeable).on(\"finish\", resolve).on(\"error\", reject))\r\n return filename\r\n}\r\n\r\nexport async function downloadVscode(dir: string) {\r\n await downloadFromWinget({\r\n name: \"VSCode\",\r\n id: \"Microsoft.VisualStudioCode\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.Scope === \"machine\"\r\n })\r\n}\r\n\r\nexport async function sleep(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms))\r\n}\r\n\r\nexport namespace PCQQ {\r\n export interface Result {\r\n resp: Resp\r\n }\r\n\r\n export interface Resp {\r\n soft_list: Softlist[]\r\n retCode: number\r\n }\r\n\r\n export interface Softlist {\r\n soft_id: number\r\n os_type: number\r\n os_bit: number\r\n display_name: string\r\n nick_ver: string\r\n ver_name: string\r\n file_size: string\r\n file_name: string\r\n publish_date: string\r\n download_url: string\r\n download_https_url: string\r\n }\r\n}\r\n\r\nexport async function downloadFromPCQQ(dir: string, cmdid: number, soft_id_list: number) {\r\n const data = new URLSearchParams()\r\n data.set(\"cmdid\", cmdid.toString())\r\n data.set(\"jprxReq[req][soft_id_list][]\", soft_id_list.toString())\r\n const headers = new Headers()\r\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\")\r\n const response = await fetch(`https://luban.m.qq.com/api/public/software-manager/softwareProxy`, { method: \"POST\", headers, body: data.toString() })\r\n const result: PCQQ.Result = await response.json()\r\n await download(result.resp.soft_list[0].download_https_url, dir, result.resp.soft_list[0].file_name)\r\n}\r\n\r\nexport namespace Winget {\r\n export interface Package {\r\n PackageIdentifier: string\r\n PackageVersion: string\r\n InstallerType: string\r\n InstallModes: string[]\r\n InstallerSwitches: InstallerSwitches\r\n ExpectedReturnCodes: ExpectedReturnCode[]\r\n UpgradeBehavior: string\r\n Protocols: string[]\r\n FileExtensions: string[]\r\n AppsAndFeaturesEntries: AppsAndFeaturesEntry[]\r\n Installers: Installer[]\r\n ManifestType: string\r\n ManifestVersion: string\r\n }\r\n\r\n export interface Installer {\r\n Architecture: string\r\n Scope?: string\r\n InstallerUrl: string\r\n InstallerSha256: string\r\n InstallerLocale?: string\r\n InstallerType?: string\r\n }\r\n\r\n export interface InstallerSwitches2 {\r\n Custom: string\r\n }\r\n\r\n export interface AppsAndFeaturesEntry {\r\n UpgradeCode: string\r\n InstallerType: string\r\n }\r\n\r\n export interface ExpectedReturnCode {\r\n InstallerReturnCode: number\r\n ReturnResponse: string\r\n }\r\n\r\n export interface InstallerSwitches {\r\n Log: string\r\n }\r\n}\r\n\r\nexport type WingetItem = {\r\n filename: string\r\n version: string\r\n ext: string\r\n architecture: string\r\n}\r\n\r\nexport type WingetDownloadInfo = {\r\n name: string\r\n id: string\r\n dir: string\r\n filter: (item: Winget.Installer, index: number, arr: Winget.Installer[]) => boolean\r\n}\r\n\r\nexport async function downloadFromWinget({ name, id, dir, filter }: WingetDownloadInfo) {\r\n const { default: fetch } = await import(\"node-fetch\")\r\n const firstLetter = id[0].toLowerCase()\r\n const path = id.replace(/\\./g, \"/\")\r\n const response = await fetch(`https://api.github.com/repos/microsoft/winget-pkgs/contents/manifests/${firstLetter}/${path}`, { agent })\r\n const data: GithubContent[] = (await response.json()) as any\r\n if (!Array.isArray(data)) throw new Error((data as any).message)\r\n const reg2 = /^\\d+(\\.\\d+?)*$/\r\n const stables = data.filter(item => reg2.test(item.name))\r\n stables.sort((a, b) => {\r\n const avs = a.name.split(\".\")\r\n const bvs = b.name.split(\".\")\r\n const max = Math.max(avs.length, bvs.length)\r\n for (let i = 0; i < max; i++) {\r\n const av = avs[i] ? parseInt(avs[i]) : 0\r\n const bv = bvs[i] ? parseInt(bvs[i]) : 0\r\n if (av < bv) return 1\r\n if (av > bv) return -1\r\n }\r\n return 0\r\n })\r\n const response2 = await fetch(`https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`, { agent })\r\n const yaml = await response2.text()\r\n const pkg: Winget.Package = YAML.parse(yaml)\r\n\r\n const installers = filter ? pkg.Installers.filter(filter) : pkg.Installers\r\n\r\n if (installers.length === 0) {\r\n consola.warn(`未找到 ${name} 的安装程序`)\r\n return\r\n }\r\n\r\n const result: WingetItem[] = []\r\n\r\n for (const { InstallerUrl, Architecture } of installers) {\r\n const filename = await download(InstallerUrl, dir)\r\n result.push({ filename, version: pkg.PackageVersion, ext: new URL(InstallerUrl).pathname.endsWith(\".exe\") ? \"exe\" : \"msi\", architecture: Architecture })\r\n }\r\n\r\n for (const { version, filename, architecture, ext } of result) {\r\n await sleep(100)\r\n await rename(join(dir, filename), join(dir, `${name}-${version}-${architecture}.${ext}`))\r\n }\r\n}\r\n\r\nexport interface GithubContent {\r\n name: string\r\n path: string\r\n sha: string\r\n size: number\r\n url: string\r\n html_url: string\r\n git_url: string\r\n download_url?: string | null\r\n type: string\r\n _links: Links\r\n}\r\n\r\nexport interface Links {\r\n self: string\r\n git: string\r\n html: string\r\n}\r\n\r\nexport async function downloadChrome(dir: string) {\r\n await downloadFromWinget({\r\n name: \"Chrome\",\r\n id: \"Google.Chrome\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\"\r\n })\r\n}\r\n\r\nexport async function downloadNodeJS(dir: string) {\r\n await downloadFromWinget({\r\n name: \"NodeJS\",\r\n id: \"OpenJS.NodeJS.LTS\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\"\r\n })\r\n}\r\n\r\nexport async function download7Zip(dir: string) {\r\n await downloadFromWinget({\r\n name: \"7Zip\",\r\n id: \"7zip.7zip\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.InstallerType === \"exe\"\r\n })\r\n}\r\n\r\nexport async function downloadGit(dir: string) {\r\n await downloadFromWinget({\r\n name: \"Git\",\r\n id: \"Git.Git\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.Scope === \"machine\"\r\n })\r\n}\r\n\r\nexport async function downloadDeskGo(dir: string) {\r\n await downloadFromPCQQ(dir, 3318, 23125)\r\n const dir2 = await readdir(dir)\r\n const file = dir2.find(item => item.startsWith(\"DeskGo\"))!\r\n await rename(\r\n join(dir, file),\r\n join(\r\n dir,\r\n file.replace(/^DeskGo_(.+)_full\\.exe$/, (match, arg) => `DeskGo-${arg.replace(/\\_/g, \".\")}-x64.exe`)\r\n )\r\n )\r\n}\r\n\r\nexport async function downloadGeekUninstaller(dir: string) {\r\n await download(`https://geekuninstaller.com/geek.zip`, dir)\r\n await unzip({\r\n input: join(dir, \"geek.zip\"),\r\n output: dir\r\n })\r\n await rm(join(dir, \"geek.zip\"), { force: true })\r\n const response = await fetch(\"https://geekuninstaller.com/download\")\r\n const text = await response.text()\r\n const version = text.match(/<b>(.+?)<\\/b>/)![1]\r\n await rename(join(dir, \"geek.exe\"), join(dir, `Geek-${version}-x64.exe`))\r\n}\r\n\r\nexport async function getVscodeExtInfo(ext: string): Promise<VscodeExt> {\r\n const response = await fetch(`https://marketplace.visualstudio.com/items?itemName=${ext}`)\r\n const html = await response.text()\r\n const reg = /^(.+?)\\.(.+?)$/\r\n const [, author, name] = ext.match(reg)!\r\n const reg2 = /\"Version\":\"(.+?)\"/\r\n const version = html.match(reg2)![1]\r\n const reg3 = /<span class=\"ux-item-name\">(.+?)<\\/span>/\r\n const displayName = html.match(reg3)![1]\r\n const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${author}/vsextensions/${name}/${version}/vspackage`\r\n return { id: ext, name: displayName, version, url }\r\n // await download(url, dir, `${ext}-${version}.vsix`)\r\n}\r\n\r\nexport interface VscodeExt {\r\n id: string\r\n name: string\r\n version: string\r\n url: string\r\n}\r\n\r\nexport async function downloadVscodeExts(dir: string) {\r\n await mkdir(dir, { recursive: true })\r\n const { default: inquirer } = await import(\"inquirer\")\r\n consola.start(\"正在获取 VS Code 扩展列表\")\r\n const extList = await execAsync(\"code --list-extensions\")\r\n const exts = await Promise.all(\r\n extList\r\n .split(/[\\n\\r]/)\r\n .filter(Boolean)\r\n .map(ext => getVscodeExtInfo(ext))\r\n )\r\n const setting = await getSetting()\r\n const vscodeExts = setting?.vscodeExts as string[] | undefined\r\n const exts2 = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"exts\",\r\n message: \"选择需要下载的扩展\",\r\n choices: exts.map(ext => ({ name: ext.name, value: ext.id })),\r\n default: vscodeExts?.filter(ext => exts.some(item => item.id === ext)) || exts.map(ext => ext.id)\r\n })\r\n setting.vscodeExts = exts2.exts\r\n await setSetting(setting)\r\n for (const ext of exts) {\r\n if (!exts2.exts.includes(ext.id)) continue\r\n consola.start(`正在下载 ${ext.name}`)\r\n await retry(() => download(ext.url, dir, `${ext.id}-${ext.version}.vsix`), 4)\r\n }\r\n}\r\n\r\nexport async function writeSyncVscodeScript(dir: string) {\r\n const script = `// @ts-check\r\nimport { spawn } from \"child_process\"\r\nimport { readdir, copyFile, rm } from \"fs/promises\"\r\nimport { homedir } from \"os\"\r\nimport { join } from \"path\"\r\n\r\n/** \r\n * @param {string} command\r\n */\r\nfunction spawnAsync(command) {\r\n return new Promise((resolve, reject) => {\r\n const child = spawn(command, { shell: true, stdio: \"inherit\" })\r\n child.on(\"exit\", code => {\r\n if (code !== 0) return reject(new Error(\\`Command failed with code \\${code}\\`))\r\n resolve(0)\r\n })\r\n })\r\n}\r\n\r\nasync function main() {\r\n const dir = await readdir(\"./extensions\")\r\n for (const ext of dir) {\r\n await spawnAsync(\\`code --install-extension \"./extensions/\\${ext}\"\\`)\r\n }\r\n const userDir = homedir()\r\n const setting = join(userDir, \"AppData/Roaming/Code/User/settings.json\")\r\n await rm(setting, { force: true })\r\n await copyFile(\"./settings.json\", setting)\r\n const snippetTarget = join(userDir, \"AppData/Roaming/Code/User/snippets\")\r\n const dir2 = await readdir(\"./snippets\")\r\n for (const file of dir2) {\r\n await rm(join(snippetTarget, file), { force: true })\r\n await copyFile(join(\"./snippets\", file), join(snippetTarget, file))\r\n }\r\n}\r\n\r\nmain()`\r\n await writeFile(join(dir, \"syncVscode.mjs\"), script, \"utf-8\")\r\n}\r\n\r\nexport async function getProcessInfoFromPid(pid: number) {\r\n try {\r\n const stdout = await execAsync(`tasklist | findstr ${pid}`)\r\n const reg = new RegExp(`( +)${pid}( (Services|Console) +)`)\r\n return stdout\r\n .split(/[\\n\\r]/)\r\n .find(line => reg.test(line))\r\n ?.replace(reg, \"$1$2\")\r\n ?.replace(/ +/g, \" \")\r\n } catch (error) {\r\n return undefined\r\n }\r\n}\r\n\r\nexport type PidInfo = {\r\n pid: number\r\n info: string\r\n}\r\n\r\nexport async function getPidInfoFromPort(port: number) {\r\n try {\r\n const stdout = await execAsync(`netstat -ano | findstr :${port}`)\r\n const reg = new RegExp(` (\\\\[::\\\\]|(\\\\d{1,3}\\\\.){3}\\\\d{1,3}):${port} `)\r\n const result = Array.from(\r\n new Set(\r\n stdout\r\n .split(/[\\n\\r]/)\r\n .filter(line => reg.test(line))\r\n .map(line => ({ pid: parseInt(line.match(reg)![1]), info: line }))\r\n )\r\n )\r\n for (let i = 0; ; ) {\r\n if (result.some(({ info }) => info[i] === undefined)) break\r\n if (result.some(({ info }) => info[i] !== \" \" || info[i + 1] !== \" \")) {\r\n i++\r\n continue\r\n }\r\n result.forEach(item => (item.info = `${item.info.slice(0, i)}${item.info.slice(i + 1)}`))\r\n }\r\n return result\r\n } catch (error) {\r\n return []\r\n }\r\n}\r\n\r\nexport async function getSetting() {\r\n const userDir = homedir()\r\n const settingPath = join(userDir, \".zixulu.json\")\r\n if (existsSync(settingPath)) {\r\n const setting = JSON.parse(await readFile(settingPath, \"utf-8\"))\r\n return setting\r\n }\r\n return {}\r\n}\r\n\r\nexport async function setSetting(setting: Record<string, any>) {\r\n const userDir = homedir()\r\n const settingPath = join(userDir, \".zixulu.json\")\r\n await writeFile(settingPath, JSON.stringify(setting, undefined, 4), \"utf-8\")\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { agent } from \"@constant/index\"\r\nimport consola from \"consola\"\r\nimport { createWriteStream, existsSync } from \"fs\"\r\nimport { mkdir, readFile, readdir, rename, rm, writeFile } from \"fs/promises\"\r\nimport { type Headers as NodeFetchHeaders } from \"node-fetch\"\r\nimport { homedir } from \"os\"\r\nimport { join } from \"path\"\r\nimport { Config } from \"prettier\"\r\nimport { execAsync, unzip } from \"soda-nodejs\"\r\nimport { Readable } from \"stream\"\r\nimport YAML from \"yaml\"\r\nimport { retry } from \"./retry\"\r\n\r\nexport function isPositiveInteger(value: any, allowZero = false): value is number {\r\n return Number.isInteger(value) && (allowZero ? value >= 0 : value > 0)\r\n}\r\n\r\nexport const prettierConfig: Config = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 160,\r\n trailingComma: \"none\"\r\n}\r\n\r\nexport function getFilename(headers: Headers | NodeFetchHeaders) {\r\n const disposition = headers.get(\"content-disposition\")\r\n if (!disposition) return undefined\r\n const reg = /filename=(.+?);/\r\n const result = disposition.match(reg)\r\n if (!result) return undefined\r\n return result[1]\r\n}\r\n\r\nexport async function download(url: string, dir: string, filename?: string) {\r\n const { default: fetch } = await import(\"node-fetch\")\r\n const response = await fetch(url, { agent })\r\n filename = getFilename(response.headers) || filename || new URL(url).pathname.split(\"/\").at(-1)!\r\n const writeable = createWriteStream(join(dir, filename))\r\n await new Promise((resolve, reject) => Readable.from(response.body!).pipe(writeable).on(\"finish\", resolve).on(\"error\", reject))\r\n return filename\r\n}\r\n\r\nexport async function downloadVscode(dir: string) {\r\n await downloadFromWinget({\r\n name: \"VSCode\",\r\n id: \"Microsoft.VisualStudioCode\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.Scope === \"machine\"\r\n })\r\n}\r\n\r\nexport async function sleep(ms: number) {\r\n return new Promise(resolve => setTimeout(resolve, ms))\r\n}\r\n\r\nexport namespace PCQQ {\r\n export interface Result {\r\n resp: Resp\r\n }\r\n\r\n export interface Resp {\r\n soft_list: Softlist[]\r\n retCode: number\r\n }\r\n\r\n export interface Softlist {\r\n soft_id: number\r\n os_type: number\r\n os_bit: number\r\n display_name: string\r\n nick_ver: string\r\n ver_name: string\r\n file_size: string\r\n file_name: string\r\n publish_date: string\r\n download_url: string\r\n download_https_url: string\r\n }\r\n}\r\n\r\nexport async function downloadFromPCQQ(dir: string, cmdid: number, soft_id_list: number) {\r\n const data = new URLSearchParams()\r\n data.set(\"cmdid\", cmdid.toString())\r\n data.set(\"jprxReq[req][soft_id_list][]\", soft_id_list.toString())\r\n const headers = new Headers()\r\n headers.set(\"Content-Type\", \"application/x-www-form-urlencoded\")\r\n const response = await fetch(`https://luban.m.qq.com/api/public/software-manager/softwareProxy`, { method: \"POST\", headers, body: data.toString() })\r\n const result: PCQQ.Result = await response.json()\r\n await download(result.resp.soft_list[0].download_https_url, dir, result.resp.soft_list[0].file_name)\r\n}\r\n\r\nexport namespace Winget {\r\n export interface Package {\r\n PackageIdentifier: string\r\n PackageVersion: string\r\n InstallerType: string\r\n InstallModes: string[]\r\n InstallerSwitches: InstallerSwitches\r\n ExpectedReturnCodes: ExpectedReturnCode[]\r\n UpgradeBehavior: string\r\n Protocols: string[]\r\n FileExtensions: string[]\r\n AppsAndFeaturesEntries: AppsAndFeaturesEntry[]\r\n Installers: Installer[]\r\n ManifestType: string\r\n ManifestVersion: string\r\n }\r\n\r\n export interface Installer {\r\n Architecture: string\r\n Scope?: string\r\n InstallerUrl: string\r\n InstallerSha256: string\r\n InstallerLocale?: string\r\n InstallerType?: string\r\n }\r\n\r\n export interface InstallerSwitches2 {\r\n Custom: string\r\n }\r\n\r\n export interface AppsAndFeaturesEntry {\r\n UpgradeCode: string\r\n InstallerType: string\r\n }\r\n\r\n export interface ExpectedReturnCode {\r\n InstallerReturnCode: number\r\n ReturnResponse: string\r\n }\r\n\r\n export interface InstallerSwitches {\r\n Log: string\r\n }\r\n}\r\n\r\nexport type WingetItem = {\r\n filename: string\r\n version: string\r\n ext: string\r\n architecture: string\r\n}\r\n\r\nexport type WingetDownloadInfo = {\r\n name: string\r\n id: string\r\n dir: string\r\n filter: (item: Winget.Installer, index: number, arr: Winget.Installer[]) => boolean\r\n}\r\n\r\nexport async function downloadFromWinget({ name, id, dir, filter }: WingetDownloadInfo) {\r\n const { default: fetch } = await import(\"node-fetch\")\r\n const firstLetter = id[0].toLowerCase()\r\n const path = id.replace(/\\./g, \"/\")\r\n const response = await fetch(`https://api.github.com/repos/microsoft/winget-pkgs/contents/manifests/${firstLetter}/${path}`, { agent })\r\n const data: GithubContent[] = (await response.json()) as any\r\n if (!Array.isArray(data)) throw new Error((data as any).message)\r\n const reg2 = /^\\d+(\\.\\d+?)*$/\r\n const stables = data.filter(item => reg2.test(item.name))\r\n stables.sort((a, b) => {\r\n const avs = a.name.split(\".\")\r\n const bvs = b.name.split(\".\")\r\n const max = Math.max(avs.length, bvs.length)\r\n for (let i = 0; i < max; i++) {\r\n const av = avs[i] ? parseInt(avs[i]) : 0\r\n const bv = bvs[i] ? parseInt(bvs[i]) : 0\r\n if (av < bv) return 1\r\n if (av > bv) return -1\r\n }\r\n return 0\r\n })\r\n const response2 = await fetch(\r\n `https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`,\r\n { agent }\r\n )\r\n const yaml = await response2.text()\r\n const pkg: Winget.Package = YAML.parse(yaml)\r\n\r\n const installers = filter ? pkg.Installers.filter(filter) : pkg.Installers\r\n\r\n if (installers.length === 0) {\r\n consola.warn(`未找到 ${name} 的安装程序`)\r\n return\r\n }\r\n\r\n const result: WingetItem[] = []\r\n\r\n for (const { InstallerUrl, Architecture } of installers) {\r\n const filename = await download(InstallerUrl, dir)\r\n result.push({ filename, version: pkg.PackageVersion, ext: new URL(InstallerUrl).pathname.endsWith(\".exe\") ? \"exe\" : \"msi\", architecture: Architecture })\r\n }\r\n\r\n for (const { version, filename, architecture, ext } of result) {\r\n await sleep(100)\r\n await rename(join(dir, filename), join(dir, `${name}-${version}-${architecture}.${ext}`))\r\n }\r\n}\r\n\r\nexport interface GithubContent {\r\n name: string\r\n path: string\r\n sha: string\r\n size: number\r\n url: string\r\n html_url: string\r\n git_url: string\r\n download_url?: string | null\r\n type: string\r\n _links: Links\r\n}\r\n\r\nexport interface Links {\r\n self: string\r\n git: string\r\n html: string\r\n}\r\n\r\nexport async function downloadChrome(dir: string) {\r\n await downloadFromWinget({\r\n name: \"Chrome\",\r\n id: \"Google.Chrome\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\"\r\n })\r\n}\r\n\r\nexport async function downloadNodeJS(dir: string) {\r\n await downloadFromWinget({\r\n name: \"NodeJS\",\r\n id: \"OpenJS.NodeJS.LTS\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\"\r\n })\r\n}\r\n\r\nexport async function download7Zip(dir: string) {\r\n await downloadFromWinget({\r\n name: \"7Zip\",\r\n id: \"7zip.7zip\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.InstallerType === \"exe\"\r\n })\r\n}\r\n\r\nexport async function downloadGit(dir: string) {\r\n await downloadFromWinget({\r\n name: \"Git\",\r\n id: \"Git.Git\",\r\n dir,\r\n filter: item => item.Architecture === \"x64\" && item.Scope === \"machine\"\r\n })\r\n}\r\n\r\nexport async function downloadDeskGo(dir: string) {\r\n await downloadFromPCQQ(dir, 3318, 23125)\r\n const dir2 = await readdir(dir)\r\n const file = dir2.find(item => item.startsWith(\"DeskGo\"))!\r\n await rename(\r\n join(dir, file),\r\n join(\r\n dir,\r\n file.replace(/^DeskGo_(.+)_full\\.exe$/, (match, arg) => `DeskGo-${arg.replace(/\\_/g, \".\")}-x64.exe`)\r\n )\r\n )\r\n}\r\n\r\nexport async function downloadGeekUninstaller(dir: string) {\r\n await download(`https://geekuninstaller.com/geek.zip`, dir)\r\n await unzip({\r\n input: join(dir, \"geek.zip\"),\r\n output: dir\r\n })\r\n await rm(join(dir, \"geek.zip\"), { force: true })\r\n const response = await fetch(\"https://geekuninstaller.com/download\")\r\n const text = await response.text()\r\n const version = text.match(/<b>(.+?)<\\/b>/)![1]\r\n await rename(join(dir, \"geek.exe\"), join(dir, `Geek-${version}-x64.exe`))\r\n}\r\n\r\nexport async function getVscodeExtInfo(ext: string): Promise<VscodeExt> {\r\n const { default: fetch } = await import(\"node-fetch\")\r\n const response = await fetch(`https://marketplace.visualstudio.com/items?itemName=${ext}`, { agent })\r\n const html = await response.text()\r\n const reg = /^(.+?)\\.(.+?)$/\r\n const [, author, name] = ext.match(reg)!\r\n const reg2 = /\"Version\":\"(.+?)\"/\r\n const version = html.match(reg2)![1]\r\n const reg3 = /<span class=\"ux-item-name\">(.+?)<\\/span>/\r\n const displayName = html.match(reg3)![1]\r\n const url = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${author}/vsextensions/${name}/${version}/vspackage`\r\n return { id: ext, name: displayName, version, url }\r\n // await download(url, dir, `${ext}-${version}.vsix`)\r\n}\r\n\r\nexport interface VscodeExt {\r\n id: string\r\n name: string\r\n version: string\r\n url: string\r\n}\r\n\r\nexport async function downloadVscodeExts(dir: string) {\r\n await mkdir(dir, { recursive: true })\r\n const { default: inquirer } = await import(\"inquirer\")\r\n consola.start(\"正在获取 VS Code 扩展列表\")\r\n const extList = await execAsync(\"code --list-extensions\")\r\n const exts = await Promise.all(\r\n extList\r\n .split(/[\\n\\r]/)\r\n .filter(Boolean)\r\n .map(ext => getVscodeExtInfo(ext))\r\n )\r\n const setting = await getSetting()\r\n const vscodeExts = setting?.vscodeExts as string[] | undefined\r\n const exts2 = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"exts\",\r\n message: \"选择需要下载的扩展\",\r\n choices: exts.map(ext => ({ name: ext.name, value: ext.id })),\r\n default: vscodeExts?.filter(ext => exts.some(item => item.id === ext)) || exts.map(ext => ext.id)\r\n })\r\n setting.vscodeExts = exts2.exts\r\n await setSetting(setting)\r\n for (const ext of exts) {\r\n if (!exts2.exts.includes(ext.id)) continue\r\n consola.start(`正在下载 ${ext.name}`)\r\n await retry(() => download(ext.url, dir, `${ext.id}-${ext.version}.vsix`), 4)\r\n }\r\n}\r\n\r\nexport async function writeSyncVscodeScript(dir: string) {\r\n const script = `// @ts-check\r\nimport { spawn } from \"child_process\"\r\nimport { readdir, copyFile, rm } from \"fs/promises\"\r\nimport { homedir } from \"os\"\r\nimport { join } from \"path\"\r\n\r\n/** \r\n * @param {string} command\r\n */\r\nfunction spawnAsync(command) {\r\n return new Promise((resolve, reject) => {\r\n const child = spawn(command, { shell: true, stdio: \"inherit\" })\r\n child.on(\"exit\", code => {\r\n if (code !== 0) return reject(new Error(\\`Command failed with code \\${code}\\`))\r\n resolve(0)\r\n })\r\n })\r\n}\r\n\r\nasync function main() {\r\n const dir = await readdir(\"./extensions\")\r\n for (const ext of dir) {\r\n await spawnAsync(\\`code --install-extension \"./extensions/\\${ext}\"\\`)\r\n }\r\n const userDir = homedir()\r\n const setting = join(userDir, \"AppData/Roaming/Code/User/settings.json\")\r\n await rm(setting, { force: true })\r\n await copyFile(\"./settings.json\", setting)\r\n const snippetTarget = join(userDir, \"AppData/Roaming/Code/User/snippets\")\r\n const dir2 = await readdir(\"./snippets\")\r\n for (const file of dir2) {\r\n await rm(join(snippetTarget, file), { force: true })\r\n await copyFile(join(\"./snippets\", file), join(snippetTarget, file))\r\n }\r\n}\r\n\r\nmain()`\r\n await writeFile(join(dir, \"syncVscode.mjs\"), script, \"utf-8\")\r\n}\r\n\r\nexport async function getProcessInfoFromPid(pid: number) {\r\n try {\r\n const stdout = await execAsync(`tasklist | findstr ${pid}`)\r\n const reg = new RegExp(`( +)${pid}( (Services|Console) +)`)\r\n return stdout\r\n .split(/[\\n\\r]/)\r\n .find(line => reg.test(line))\r\n ?.replace(reg, \"$1$2\")\r\n ?.replace(/ +/g, \" \")\r\n } catch (error) {\r\n return undefined\r\n }\r\n}\r\n\r\nexport type PidInfo = {\r\n pid: number\r\n info: string\r\n}\r\n\r\nexport async function getPidInfoFromPort(port: number) {\r\n try {\r\n const stdout = await execAsync(`netstat -ano | findstr :${port}`)\r\n const reg = new RegExp(` (\\\\[::\\\\]|(\\\\d{1,3}\\\\.){3}\\\\d{1,3}):${port} `)\r\n const result = Array.from(\r\n new Set(\r\n stdout\r\n .split(/[\\n\\r]/)\r\n .filter(line => reg.test(line))\r\n .map(line => ({ pid: parseInt(line.match(reg)![1]), info: line }))\r\n )\r\n )\r\n for (let i = 0; ; ) {\r\n if (result.some(({ info }) => info[i] === undefined)) break\r\n if (result.some(({ info }) => info[i] !== \" \" || info[i + 1] !== \" \")) {\r\n i++\r\n continue\r\n }\r\n result.forEach(item => (item.info = `${item.info.slice(0, i)}${item.info.slice(i + 1)}`))\r\n }\r\n return result\r\n } catch (error) {\r\n return []\r\n }\r\n}\r\n\r\nexport async function getSetting() {\r\n const userDir = homedir()\r\n const settingPath = join(userDir, \".zixulu.json\")\r\n if (existsSync(settingPath)) {\r\n const setting = JSON.parse(await readFile(settingPath, \"utf-8\"))\r\n return setting\r\n }\r\n return {}\r\n}\r\n\r\nexport async function setSetting(setting: Record<string, any>) {\r\n const userDir = homedir()\r\n const settingPath = join(userDir, \".zixulu.json\")\r\n await writeFile(settingPath, JSON.stringify(setting, undefined, 4), \"utf-8\")\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["fetch", "YAML", "consola"]
7
7
  }
@@ -49,6 +49,7 @@ var import_removeESLint = require("./removeESLint");
49
49
  var import_rsbuild = require("./rsbuild");
50
50
  var import_setTsConfig = require("./setTsConfig");
51
51
  var import_vite = require("./vite");
52
+ var import_addZipDist = require("./addZipDist");
52
53
  async function initProject() {
53
54
  import_consola.default.start("开始初始化项目");
54
55
  const { default: inquirer } = await import("inquirer");
@@ -59,10 +60,6 @@ async function initProject() {
59
60
  import_consola.default.error("仅支持 React 项目");
60
61
  return;
61
62
  }
62
- await (0, import_addDependency.addDependency)({
63
- package: ["@types/node"],
64
- type: "devDependencies"
65
- });
66
63
  let type;
67
64
  if (allDependcies.some((item) => item === "next")) {
68
65
  type = import_constant.ProjectType.next;
@@ -77,6 +74,11 @@ async function initProject() {
77
74
  return;
78
75
  }
79
76
  await (0, import_addGitignore.addGitignore)();
77
+ await (0, import_addDependency.addDependency)({
78
+ package: ["@types/node"],
79
+ type: "devDependencies"
80
+ });
81
+ await (0, import_addZipDist.addZipDist)({ install: false });
80
82
  const manager = await (0, import_getPackageManager.getPackageManager)();
81
83
  if (allDependcies.some((item) => item.includes("eslint"))) {
82
84
  const { removeEslintConfig } = await inquirer.prompt({
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/initProject.ts"],
4
- "sourcesContent": ["import { ProjectType } from \"@constant/index\"\r\nimport consola from \"consola\"\r\nimport { addAntd } from \"./addAntd\"\r\nimport { addDependency } from \"./addDependency\"\r\nimport { addGitignore } from \"./addGitignore\"\r\nimport { addPrettier } from \"./addPrettier\"\r\nimport { addPrisma } from \"./addPrisma\"\r\nimport { tailwind } from \"./tailwind\"\r\nimport { createBrowserlistrc } from \"./createBrowserlistrc\"\r\nimport { getPackageManager } from \"./getPackageManager\"\r\nimport { installDependceny } from \"./installDependceny\"\r\nimport { next } from \"./next\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\nimport { removeESLint } from \"./removeESLint\"\r\nimport { rsbuild } from \"./rsbuild\"\r\nimport { setTsConfig } from \"./setTsConfig\"\r\nimport { vite } from \"./vite\"\r\n\r\nexport async function initProject() {\r\n consola.start(\"开始初始化项目\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n await createBrowserlistrc()\r\n const packageJson = await readPackageJson()\r\n const allDependcies = Object.keys(packageJson.dependencies || {}).concat(Object.keys(packageJson.devDependencies || {}))\r\n if (!allDependcies.includes(\"react\") || !allDependcies.includes(\"react-dom\")) {\r\n consola.error(\"仅支持 React 项目\")\r\n return\r\n }\r\n await addDependency({\r\n package: [\"@types/node\"],\r\n type: \"devDependencies\"\r\n })\r\n let type: ProjectType\r\n if (allDependcies.some(item => item === \"next\")) {\r\n type = ProjectType.next\r\n } else if (allDependcies.some(item => item === \"@remix-run/react\")) {\r\n type = ProjectType.remix\r\n } else if (allDependcies.some(item => item === \"vite\")) {\r\n type = ProjectType.vite\r\n } else if (allDependcies.some(item => item === \"@rsbuild/core\")) {\r\n type = ProjectType.rsbuild\r\n } else {\r\n consola.error(\"仅支持 Next、Remix、Vite、Rsbuild 项目\")\r\n return\r\n }\r\n await addGitignore()\r\n const manager = await getPackageManager()\r\n if (allDependcies.some(item => item.includes(\"eslint\"))) {\r\n const { removeEslintConfig } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"removeEslintConfig\",\r\n message: \"是否删除 ESLint 配置文件\",\r\n default: true\r\n })\r\n if (removeEslintConfig) await removeESLint()\r\n }\r\n const isFullStack = type === ProjectType.next || type === ProjectType.remix\r\n const choices = isFullStack ? [\"antd\", \"ahooks\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"prisma\", \"tailwind\", \"zod\", \"@emotion/css\", \"stable-hash\"] : [\"antd\", \"ahooks\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"tailwind\", \"@emotion/css\", \"react-router-dom\", \"stable-hash\"]\r\n\r\n const { modules } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"modules\",\r\n message: \"请选择要添加的模块\",\r\n choices,\r\n default: choices\r\n })\r\n\r\n const added: string[] = []\r\n if (modules.includes(\"antd\")) await addAntd()\r\n if (modules.includes(\"tailwind\")) await tailwind()\r\n else await addPrettier()\r\n if (modules.includes(\"ahooks\")) added.push(\"ahooks\")\r\n if (modules.includes(\"dayjs\")) added.push(\"dayjs\")\r\n if (modules.includes(\"deepsea-components\")) added.push(\"deepsea-components\")\r\n if (modules.includes(\"deepsea-tools\")) added.push(\"deepsea-tools\")\r\n if (modules.includes(\"stable-hash\")) added.push(\"stable-hash\")\r\n if (modules.includes(\"zod\")) added.push(\"zod\")\r\n if (modules.includes(\"@emotion/css\")) added.push(\"@emotion/css\")\r\n if (modules.includes(\"react-router-dom\")) added.push(\"react-router-dom\")\r\n if (modules.includes(\"stable-hash\")) added.push(\"stable-hash\")\r\n\r\n await addDependency({\r\n package: added,\r\n type: \"dependencies\"\r\n })\r\n\r\n switch (type) {\r\n case ProjectType.next:\r\n await next()\r\n break\r\n\r\n case ProjectType.remix:\r\n await vite()\r\n break\r\n\r\n case ProjectType.vite:\r\n await vite()\r\n break\r\n\r\n case ProjectType.rsbuild:\r\n await rsbuild()\r\n break\r\n }\r\n\r\n let installed = false\r\n if (modules.includes(\"prisma\")) {\r\n await addPrisma(manager)\r\n installed = true\r\n }\r\n if (!installed) await installDependceny({ silent: true, manager })\r\n await setTsConfig(\"noEmit\", true)\r\n consola.success(\"项目初始化完成\")\r\n}\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { ProjectType } from \"@constant/index\"\r\nimport consola from \"consola\"\r\nimport { addAntd } from \"./addAntd\"\r\nimport { addDependency } from \"./addDependency\"\r\nimport { addGitignore } from \"./addGitignore\"\r\nimport { addPrettier } from \"./addPrettier\"\r\nimport { addPrisma } from \"./addPrisma\"\r\nimport { tailwind } from \"./tailwind\"\r\nimport { createBrowserlistrc } from \"./createBrowserlistrc\"\r\nimport { getPackageManager } from \"./getPackageManager\"\r\nimport { installDependceny } from \"./installDependceny\"\r\nimport { next } from \"./next\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\nimport { removeESLint } from \"./removeESLint\"\r\nimport { rsbuild } from \"./rsbuild\"\r\nimport { setTsConfig } from \"./setTsConfig\"\r\nimport { vite } from \"./vite\"\r\nimport { addZipDist } from \"./addZipDist\"\r\n\r\nexport async function initProject() {\r\n consola.start(\"开始初始化项目\")\r\n const { default: inquirer } = await import(\"inquirer\")\r\n await createBrowserlistrc()\r\n const packageJson = await readPackageJson()\r\n const allDependcies = Object.keys(packageJson.dependencies || {}).concat(Object.keys(packageJson.devDependencies || {}))\r\n if (!allDependcies.includes(\"react\") || !allDependcies.includes(\"react-dom\")) {\r\n consola.error(\"仅支持 React 项目\")\r\n return\r\n }\r\n let type: ProjectType\r\n if (allDependcies.some(item => item === \"next\")) {\r\n type = ProjectType.next\r\n } else if (allDependcies.some(item => item === \"@remix-run/react\")) {\r\n type = ProjectType.remix\r\n } else if (allDependcies.some(item => item === \"vite\")) {\r\n type = ProjectType.vite\r\n } else if (allDependcies.some(item => item === \"@rsbuild/core\")) {\r\n type = ProjectType.rsbuild\r\n } else {\r\n consola.error(\"仅支持 Next、Remix、Vite、Rsbuild 项目\")\r\n return\r\n }\r\n await addGitignore()\r\n await addDependency({\r\n package: [\"@types/node\"],\r\n type: \"devDependencies\"\r\n })\r\n await addZipDist({ install: false })\r\n const manager = await getPackageManager()\r\n if (allDependcies.some(item => item.includes(\"eslint\"))) {\r\n const { removeEslintConfig } = await inquirer.prompt({\r\n type: \"confirm\",\r\n name: \"removeEslintConfig\",\r\n message: \"是否删除 ESLint 配置文件\",\r\n default: true\r\n })\r\n if (removeEslintConfig) await removeESLint()\r\n }\r\n const isFullStack = type === ProjectType.next || type === ProjectType.remix\r\n const choices = isFullStack\r\n ? [\"antd\", \"ahooks\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"prisma\", \"tailwind\", \"zod\", \"@emotion/css\", \"stable-hash\"]\r\n : [\"antd\", \"ahooks\", \"dayjs\", \"deepsea-components\", \"deepsea-tools\", \"tailwind\", \"@emotion/css\", \"react-router-dom\", \"stable-hash\"]\r\n\r\n const { modules } = await inquirer.prompt({\r\n type: \"checkbox\",\r\n name: \"modules\",\r\n message: \"请选择要添加的模块\",\r\n choices,\r\n default: choices\r\n })\r\n\r\n const added: string[] = []\r\n if (modules.includes(\"antd\")) await addAntd()\r\n if (modules.includes(\"tailwind\")) await tailwind()\r\n else await addPrettier()\r\n if (modules.includes(\"ahooks\")) added.push(\"ahooks\")\r\n if (modules.includes(\"dayjs\")) added.push(\"dayjs\")\r\n if (modules.includes(\"deepsea-components\")) added.push(\"deepsea-components\")\r\n if (modules.includes(\"deepsea-tools\")) added.push(\"deepsea-tools\")\r\n if (modules.includes(\"stable-hash\")) added.push(\"stable-hash\")\r\n if (modules.includes(\"zod\")) added.push(\"zod\")\r\n if (modules.includes(\"@emotion/css\")) added.push(\"@emotion/css\")\r\n if (modules.includes(\"react-router-dom\")) added.push(\"react-router-dom\")\r\n if (modules.includes(\"stable-hash\")) added.push(\"stable-hash\")\r\n\r\n await addDependency({\r\n package: added,\r\n type: \"dependencies\"\r\n })\r\n\r\n switch (type) {\r\n case ProjectType.next:\r\n await next()\r\n break\r\n\r\n case ProjectType.remix:\r\n await vite()\r\n break\r\n\r\n case ProjectType.vite:\r\n await vite()\r\n break\r\n\r\n case ProjectType.rsbuild:\r\n await rsbuild()\r\n break\r\n }\r\n\r\n let installed = false\r\n if (modules.includes(\"prisma\")) {\r\n await addPrisma(manager)\r\n installed = true\r\n }\r\n if (!installed) await installDependceny({ silent: true, manager })\r\n await setTsConfig(\"noEmit\", true)\r\n consola.success(\"项目初始化完成\")\r\n}\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["consola"]
7
7
  }
@@ -38,14 +38,12 @@ var import_addPostCSSConfig = require("./addPostCSSConfig");
38
38
  var import_addPrettier = require("./addPrettier");
39
39
  var import_addTailwindConfig = require("./addTailwindConfig");
40
40
  var import_addTailwindToCss = require("./addTailwindToCss");
41
- var import_removeTailwindCssPreset = require("./removeTailwindCssPreset");
42
41
  async function tailwind() {
43
42
  import_consola.default.start("开始添加 tailwind 配置");
44
43
  const addedPackages = await (0, import_addDependency.addDependency)({
45
44
  package: ["tailwindcss", "autoprefixer", "postcss", "prettier", "prettier-plugin-tailwindcss"],
46
45
  type: "devDependencies"
47
46
  });
48
- await (0, import_removeTailwindCssPreset.removeTailwindCssPreflight)(addedPackages.tailwindcss);
49
47
  await (0, import_addTailwindConfig.addTailwindConfig)();
50
48
  await (0, import_addPostCSSConfig.addPostCSSConfig)();
51
49
  await (0, import_addTailwindToCss.addTailwindToCss)();
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/utils/tailwind.ts"],
4
- "sourcesContent": ["import consola from \"consola\"\r\nimport { addDependency } from \"./addDependency\"\r\nimport { addPostCSSConfig } from \"./addPostCSSConfig\"\r\nimport { addPrettier } from \"./addPrettier\"\r\nimport { addTailwindConfig } from \"./addTailwindConfig\"\r\nimport { addTailwindToCss } from \"./addTailwindToCss\"\r\nimport { removeTailwindCssPreflight } from \"./removeTailwindCssPreset\"\r\n\r\n/** 添加 tailwind */\r\nexport async function tailwind() {\r\n consola.start(\"开始添加 tailwind 配置\")\r\n const addedPackages = await addDependency({\r\n package: [\"tailwindcss\", \"autoprefixer\", \"postcss\", \"prettier\", \"prettier-plugin-tailwindcss\"],\r\n type: \"devDependencies\"\r\n })\r\n await removeTailwindCssPreflight(addedPackages.tailwindcss)\r\n await addTailwindConfig()\r\n await addPostCSSConfig()\r\n await addTailwindToCss()\r\n await addPrettier()\r\n consola.success(\"添加 tailwind 配置成功\")\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,2BAA8B;AAC9B,8BAAiC;AACjC,yBAA4B;AAC5B,+BAAkC;AAClC,8BAAiC;AACjC,qCAA2C;AAG3C,eAAsB,WAAW;AAC7B,iBAAAA,QAAQ,MAAM,kBAAkB;AAChC,QAAM,gBAAgB,UAAM,oCAAc;AAAA,IACtC,SAAS,CAAC,eAAe,gBAAgB,WAAW,YAAY,6BAA6B;AAAA,IAC7F,MAAM;AAAA,EACV,CAAC;AACD,YAAM,2DAA2B,cAAc,WAAW;AAC1D,YAAM,4CAAkB;AACxB,YAAM,0CAAiB;AACvB,YAAM,0CAAiB;AACvB,YAAM,gCAAY;AAClB,iBAAAA,QAAQ,QAAQ,kBAAkB;AACtC;",
4
+ "sourcesContent": ["import consola from \"consola\"\r\nimport { addDependency } from \"./addDependency\"\r\nimport { addPostCSSConfig } from \"./addPostCSSConfig\"\r\nimport { addPrettier } from \"./addPrettier\"\r\nimport { addTailwindConfig } from \"./addTailwindConfig\"\r\nimport { addTailwindToCss } from \"./addTailwindToCss\"\r\n\r\n/** 添加 tailwind */\r\nexport async function tailwind() {\r\n consola.start(\"开始添加 tailwind 配置\")\r\n const addedPackages = await addDependency({\r\n package: [\"tailwindcss\", \"autoprefixer\", \"postcss\", \"prettier\", \"prettier-plugin-tailwindcss\"],\r\n type: \"devDependencies\"\r\n })\r\n await addTailwindConfig()\r\n await addPostCSSConfig()\r\n await addTailwindToCss()\r\n await addPrettier()\r\n consola.success(\"添加 tailwind 配置成功\")\r\n}\r\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,2BAA8B;AAC9B,8BAAiC;AACjC,yBAA4B;AAC5B,+BAAkC;AAClC,8BAAiC;AAGjC,eAAsB,WAAW;AAC7B,iBAAAA,QAAQ,MAAM,kBAAkB;AAChC,QAAM,gBAAgB,UAAM,oCAAc;AAAA,IACtC,SAAS,CAAC,eAAe,gBAAgB,WAAW,YAAY,6BAA6B;AAAA,IAC7F,MAAM;AAAA,EACV,CAAC;AACD,YAAM,4CAAkB;AACxB,YAAM,0CAAiB;AACvB,YAAM,0CAAiB;AACvB,YAAM,gCAAY;AAClB,iBAAAA,QAAQ,QAAQ,kBAAkB;AACtC;",
6
6
  "names": ["consola"]
7
7
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zixulu",
3
- "version": "1.40.4",
3
+ "version": "1.41.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "bin": {
package/src/index.ts CHANGED
@@ -37,11 +37,12 @@ import { Command } from "commander"
37
37
  import { resolve } from "path"
38
38
  import { actionWithBackup } from "./utils/actionWithBackup"
39
39
  import { addStartScript } from "./utils/addStartScript"
40
+ import { addZipDist } from "./utils/addZipDist"
40
41
  import { createBrowserlistrc } from "./utils/createBrowserlistrc"
41
42
  import { getCommitMessage } from "./utils/getCommitMessage"
42
43
  import { getHeaders } from "./utils/getHeaders"
43
44
  import { readPackageJsonSync } from "./utils/readPackageJsonSync"
44
- import { removeTailwindCssPreflight } from "./utils/removeTailwindCssPreset"
45
+
45
46
  import { replaceAssets } from "./utils/replaceAssets"
46
47
  import { setGlobal } from "./utils/setGlobal"
47
48
  import { upgradeRsbuild } from "./utils/upgradeRsbuild"
@@ -231,12 +232,12 @@ program
231
232
  .description("添加 express 启动脚本")
232
233
  .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))
233
234
 
234
- program
235
- .command("removeTailwindCssPreflight")
236
- .alias("rtp")
237
- .description("删除 tailwindcss 的 preflight.css 中的 img 和 video 样式")
238
- .action(actionWithBackup(() => removeTailwindCssPreflight()))
239
-
240
235
  program.command("headers").description("将浏览器中直接复制的 headers 转换为对象").action(getHeaders)
241
236
 
237
+ program
238
+ .command("add-zip-dist")
239
+ .alias("azd")
240
+ .description("添加将 dist 压缩的脚本")
241
+ .action(actionWithBackup(() => addZipDist({ install: true })))
242
+
242
243
  program.parse()
@@ -0,0 +1,40 @@
1
+ import { mkdir, writeFile } from "fs/promises"
2
+ import { addDependency } from "./addDependency"
3
+ import { installDependceny } from "./installDependceny"
4
+ import { readPackageJson } from "./readPackageJson"
5
+ import { writePackageJson } from "./writePackageJson"
6
+ import { getCommitMessage } from "./getCommitMessage"
7
+ import { CommitType } from "@src/constant"
8
+
9
+ const zipDistContent = `// @ts-check
10
+ import { rm } from "fs/promises"
11
+ import { zip } from "soda-nodejs"
12
+
13
+ async function main() {
14
+ await rm("dist.zip", { force: true })
15
+ await zip({
16
+ input: "dist",
17
+ output: "dist.zip"
18
+ })
19
+ }
20
+
21
+ main()
22
+ `
23
+
24
+ type AddZipDistConfig = {
25
+ install?: boolean
26
+ }
27
+
28
+ export async function addZipDist({ install }: AddZipDistConfig = {}) {
29
+ await addDependency({
30
+ package: ["soda-nodejs"],
31
+ type: "devDependencies"
32
+ })
33
+ await mkdir("scripts", { recursive: true })
34
+ await writeFile("scripts/zipDist.mjs", zipDistContent, "utf-8")
35
+ const packageJson = await readPackageJson()
36
+ packageJson.scripts.build = `${packageJson.scripts.build} && node scripts/zipDist.mjs`
37
+ await writePackageJson({ data: packageJson })
38
+ if (install) await installDependceny()
39
+ return getCommitMessage(CommitType.feature, "添加压缩脚本")
40
+ }
@@ -1,39 +1,38 @@
1
1
  import consola from "consola"
2
2
  import { mkdir, readdir, rename, rm } from "fs/promises"
3
3
  import { join } from "path"
4
- import { exit } from "process"
5
4
  import { execAsync, zip } from "soda-nodejs"
5
+ import { getPackageVersionInDependcy } from "./getPackageVersionInDependcy"
6
6
 
7
7
  export async function downloadNpm(name: string) {
8
8
  consola.start(`开始下载 ${name}`)
9
- const folder = `.${name}`
10
- const file = `${name}.zip`
9
+ const folder = `${name}-cache`
11
10
  const dir = await readdir(".")
12
11
  if (dir.includes(folder)) {
13
12
  consola.warn("文件夹已存在")
14
13
  throw new Error("文件夹已存在")
15
14
  }
16
- if (dir.includes(file)) {
17
- consola.warn("文件已存在")
18
- throw new Error("文件已存在")
19
- }
20
15
  await mkdir(folder, { recursive: true })
21
16
  await execAsync(`npm init -y`, { cwd: folder })
22
17
  await execAsync(`npm install ${name}`, { cwd: folder })
18
+ const version = await getPackageVersionInDependcy(name, folder)
19
+ const file = `${name}@${version}.zip`
23
20
  await mkdir(join(folder, "node_modules", name, "node_modules"))
24
- const dir1 = await readdir(join(folder, "node_modules"))
25
- for (const d of dir1) {
26
- if (d === name) continue
27
- if (d.startsWith(".")) {
28
- await rm(join(folder, "node_modules", d), { recursive: true })
21
+ const dir2 = await readdir(join(folder, "node_modules"))
22
+ for (const item of dir2) {
23
+ if (item === name) continue
24
+ if (item.startsWith(".")) {
25
+ await rm(join(folder, "node_modules", item), { recursive: true })
29
26
  continue
30
27
  }
31
- await rename(join(folder, "node_modules", d), join(folder, "node_modules", name, "node_modules", d))
28
+ await rename(join(folder, "node_modules", item), join(folder, "node_modules", name, "node_modules", item))
32
29
  }
33
30
  await zip({
34
- input: join(folder, "node_modules"),
35
- output: file
31
+ input: name,
32
+ output: file,
33
+ cwd: join(folder, "node_modules")
36
34
  })
35
+ await rename(join(folder, "node_modules", file), join(file))
37
36
  await rm(folder, { recursive: true })
38
37
  consola.success(`下载 ${name} 完成`)
39
38
  }
@@ -1,7 +1,7 @@
1
1
  import { readPackageJson } from "./readPackageJson"
2
2
 
3
- export async function getPackageVersionInDependcy(packageName: string) {
4
- const packageJson = await readPackageJson()
3
+ export async function getPackageVersionInDependcy(packageName: string, dir = "."): Promise<string | undefined> {
4
+ const packageJson = await readPackageJson(dir)
5
5
  let version = packageJson.dependencies?.[packageName] ?? packageJson.devDependencies?.[packageName] ?? packageJson.peerDependencies?.[packageName] ?? packageJson.optionalDependencies?.[packageName]
6
6
  if (!version) return undefined
7
7
  return version.replace(/^\D+/, "")
@@ -170,7 +170,10 @@ export async function downloadFromWinget({ name, id, dir, filter }: WingetDownlo
170
170
  }
171
171
  return 0
172
172
  })
173
- const response2 = await fetch(`https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`, { agent })
173
+ const response2 = await fetch(
174
+ `https://raw.githubusercontent.com/microsoft/winget-pkgs/master/manifests/${firstLetter}/${path}/${stables[0].name}/${id}.installer.yaml`,
175
+ { agent }
176
+ )
174
177
  const yaml = await response2.text()
175
178
  const pkg: Winget.Package = YAML.parse(yaml)
176
179
 
@@ -276,7 +279,8 @@ export async function downloadGeekUninstaller(dir: string) {
276
279
  }
277
280
 
278
281
  export async function getVscodeExtInfo(ext: string): Promise<VscodeExt> {
279
- const response = await fetch(`https://marketplace.visualstudio.com/items?itemName=${ext}`)
282
+ const { default: fetch } = await import("node-fetch")
283
+ const response = await fetch(`https://marketplace.visualstudio.com/items?itemName=${ext}`, { agent })
280
284
  const html = await response.text()
281
285
  const reg = /^(.+?)\.(.+?)$/
282
286
  const [, author, name] = ext.match(reg)!
@@ -15,6 +15,7 @@ import { removeESLint } from "./removeESLint"
15
15
  import { rsbuild } from "./rsbuild"
16
16
  import { setTsConfig } from "./setTsConfig"
17
17
  import { vite } from "./vite"
18
+ import { addZipDist } from "./addZipDist"
18
19
 
19
20
  export async function initProject() {
20
21
  consola.start("开始初始化项目")
@@ -26,10 +27,6 @@ export async function initProject() {
26
27
  consola.error("仅支持 React 项目")
27
28
  return
28
29
  }
29
- await addDependency({
30
- package: ["@types/node"],
31
- type: "devDependencies"
32
- })
33
30
  let type: ProjectType
34
31
  if (allDependcies.some(item => item === "next")) {
35
32
  type = ProjectType.next
@@ -44,6 +41,11 @@ export async function initProject() {
44
41
  return
45
42
  }
46
43
  await addGitignore()
44
+ await addDependency({
45
+ package: ["@types/node"],
46
+ type: "devDependencies"
47
+ })
48
+ await addZipDist({ install: false })
47
49
  const manager = await getPackageManager()
48
50
  if (allDependcies.some(item => item.includes("eslint"))) {
49
51
  const { removeEslintConfig } = await inquirer.prompt({
@@ -55,7 +57,9 @@ export async function initProject() {
55
57
  if (removeEslintConfig) await removeESLint()
56
58
  }
57
59
  const isFullStack = type === ProjectType.next || type === ProjectType.remix
58
- const choices = isFullStack ? ["antd", "ahooks", "dayjs", "deepsea-components", "deepsea-tools", "prisma", "tailwind", "zod", "@emotion/css", "stable-hash"] : ["antd", "ahooks", "dayjs", "deepsea-components", "deepsea-tools", "tailwind", "@emotion/css", "react-router-dom", "stable-hash"]
60
+ const choices = isFullStack
61
+ ? ["antd", "ahooks", "dayjs", "deepsea-components", "deepsea-tools", "prisma", "tailwind", "zod", "@emotion/css", "stable-hash"]
62
+ : ["antd", "ahooks", "dayjs", "deepsea-components", "deepsea-tools", "tailwind", "@emotion/css", "react-router-dom", "stable-hash"]
59
63
 
60
64
  const { modules } = await inquirer.prompt({
61
65
  type: "checkbox",
@@ -4,7 +4,6 @@ import { addPostCSSConfig } from "./addPostCSSConfig"
4
4
  import { addPrettier } from "./addPrettier"
5
5
  import { addTailwindConfig } from "./addTailwindConfig"
6
6
  import { addTailwindToCss } from "./addTailwindToCss"
7
- import { removeTailwindCssPreflight } from "./removeTailwindCssPreset"
8
7
 
9
8
  /** 添加 tailwind */
10
9
  export async function tailwind() {
@@ -13,7 +12,6 @@ export async function tailwind() {
13
12
  package: ["tailwindcss", "autoprefixer", "postcss", "prettier", "prettier-plugin-tailwindcss"],
14
13
  type: "devDependencies"
15
14
  })
16
- await removeTailwindCssPreflight(addedPackages.tailwindcss)
17
15
  await addTailwindConfig()
18
16
  await addPostCSSConfig()
19
17
  await addTailwindToCss()
@@ -1 +0,0 @@
1
- export declare function removeTailwindCssPreflight(version?: string): Promise<string>;
@@ -1,71 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: true });
8
- };
9
- var __copyProps = (to, from, except, desc) => {
10
- if (from && typeof from === "object" || typeof from === "function") {
11
- for (let key of __getOwnPropNames(from))
12
- if (!__hasOwnProp.call(to, key) && key !== except)
13
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
14
- }
15
- return to;
16
- };
17
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
18
-
19
- // src/utils/removeTailwindCssPreset.ts
20
- var removeTailwindCssPreset_exports = {};
21
- __export(removeTailwindCssPreset_exports, {
22
- removeTailwindCssPreflight: () => removeTailwindCssPreflight
23
- });
24
- module.exports = __toCommonJS(removeTailwindCssPreset_exports);
25
- var import_constant = require("../constant");
26
- var import_promises = require("fs/promises");
27
- var import_path = require("path");
28
- var import_getCommitMessage = require("./getCommitMessage");
29
- var import_readPackageJson = require("./readPackageJson");
30
- var import_writePackageJson = require("./writePackageJson");
31
- var import_getPackageVersionInDependcy = require("./getPackageVersionInDependcy");
32
- var patch = `diff --git a/CHANGELOG.md b/CHANGELOG.md
33
- deleted file mode 100644
34
- index 6156ddff610079324151bcf185293609374c2001..0000000000000000000000000000000000000000
35
- diff --git a/lib/css/preflight.css b/lib/css/preflight.css
36
- index 7a0d82d46e040f2bf7b133e47380b1dc599e855c..514251188aee081e9045a3a26a6769c3717f5de6 100644
37
- --- a/lib/css/preflight.css
38
- +++ b/lib/css/preflight.css
39
- @@ -376,8 +376,8 @@ Constrain images and videos to the parent width and preserve their intrinsic asp
40
-
41
- img,
42
- video {
43
- - max-width: 100%;
44
- - height: auto;
45
- + /* max-width: 100%;
46
- + height: auto; */
47
- }
48
-
49
- /* Make elements with the HTML hidden attribute stay hidden by default */
50
- `;
51
- async function removeTailwindCssPreflight(version) {
52
- version ??= await (0, import_getPackageVersionInDependcy.getPackageVersionInDependcy)("tailwindcss");
53
- await (0, import_promises.mkdir)("patches", { recursive: true });
54
- await (0, import_promises.writeFile)((0, import_path.join)("patches", `tailwindcss@${version}.patch`), patch, "utf-8");
55
- const packageJson2 = await (0, import_readPackageJson.readPackageJson)();
56
- packageJson2.pnpm ??= {};
57
- packageJson2.pnpm.patchedDependencies ??= {};
58
- packageJson2.pnpm.patchedDependencies[`tailwindcss@${version}`] = `patches/tailwindcss@${version}.patch`;
59
- packageJson2.scripts ??= {};
60
- if (packageJson2.scripts.preinstall && !packageJson2.scripts.preinstall.includes("only-allow pnpm"))
61
- packageJson2.scripts.preinstall = `npx only-allow pnpm && ${packageJson2.scripts.preinstall}`;
62
- else
63
- packageJson2.scripts.preinstall = "npx only-allow pnpm";
64
- await (0, import_writePackageJson.writePackageJson)({ data: packageJson2 });
65
- return (0, import_getCommitMessage.getCommitMessage)(import_constant.CommitType.feature, "删除 tailwindcss 的 preflight.css 中的 img 和 video 样式");
66
- }
67
- // Annotate the CommonJS export names for ESM import in node:
68
- 0 && (module.exports = {
69
- removeTailwindCssPreflight
70
- });
71
- //# sourceMappingURL=removeTailwindCssPreset.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/utils/removeTailwindCssPreset.ts"],
4
- "sourcesContent": ["import { CommitType } from \"@src/constant\"\r\nimport { mkdir, writeFile } from \"fs/promises\"\r\nimport { join } from \"path\"\r\nimport { getCommitMessage } from \"./getCommitMessage\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\nimport { writePackageJson } from \"./writePackageJson\"\r\nimport { getPackageVersionInDependcy } from \"./getPackageVersionInDependcy\"\r\n\r\nconst patch = `diff --git a/CHANGELOG.md b/CHANGELOG.md\r\ndeleted file mode 100644\r\nindex 6156ddff610079324151bcf185293609374c2001..0000000000000000000000000000000000000000\r\ndiff --git a/lib/css/preflight.css b/lib/css/preflight.css\r\nindex 7a0d82d46e040f2bf7b133e47380b1dc599e855c..514251188aee081e9045a3a26a6769c3717f5de6 100644\r\n--- a/lib/css/preflight.css\r\n+++ b/lib/css/preflight.css\r\n@@ -376,8 +376,8 @@ Constrain images and videos to the parent width and preserve their intrinsic asp\r\n \r\n img,\r\n video {\r\n- max-width: 100%;\r\n- height: auto;\r\n+ /* max-width: 100%;\r\n+ height: auto; */\r\n }\r\n \r\n /* Make elements with the HTML hidden attribute stay hidden by default */\r\n`\r\n\r\nexport async function removeTailwindCssPreflight(version?: string) {\r\n version ??= await getPackageVersionInDependcy(\"tailwindcss\")\r\n await mkdir(\"patches\", { recursive: true })\r\n await writeFile(join(\"patches\", `tailwindcss@${version}.patch`), patch, \"utf-8\")\r\n const packageJson2 = await readPackageJson()\r\n packageJson2.pnpm ??= {}\r\n packageJson2.pnpm.patchedDependencies ??= {}\r\n packageJson2.pnpm.patchedDependencies[`tailwindcss@${version}`] = `patches/tailwindcss@${version}.patch`\r\n packageJson2.scripts ??= {}\r\n if (packageJson2.scripts.preinstall && !packageJson2.scripts.preinstall.includes(\"only-allow pnpm\"))\r\n packageJson2.scripts.preinstall = `npx only-allow pnpm && ${packageJson2.scripts.preinstall}`\r\n else packageJson2.scripts.preinstall = \"npx only-allow pnpm\"\r\n await writePackageJson({ data: packageJson2 })\r\n return getCommitMessage(CommitType.feature, \"删除 tailwindcss 的 preflight.css 中的 img 和 video 样式\")\r\n}\r\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA2B;AAC3B,sBAAiC;AACjC,kBAAqB;AACrB,8BAAiC;AACjC,6BAAgC;AAChC,8BAAiC;AACjC,yCAA4C;AAE5C,IAAM,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAoBd,eAAsB,2BAA2B,SAAkB;AAC/D,cAAY,UAAM,gEAA4B,aAAa;AAC3D,YAAM,uBAAM,WAAW,EAAE,WAAW,KAAK,CAAC;AAC1C,YAAM,+BAAU,kBAAK,WAAW,eAAe,eAAe,GAAG,OAAO,OAAO;AAC/E,QAAM,eAAe,UAAM,wCAAgB;AAC3C,eAAa,SAAS,CAAC;AACvB,eAAa,KAAK,wBAAwB,CAAC;AAC3C,eAAa,KAAK,oBAAoB,eAAe,SAAS,IAAI,uBAAuB;AACzF,eAAa,YAAY,CAAC;AAC1B,MAAI,aAAa,QAAQ,cAAc,CAAC,aAAa,QAAQ,WAAW,SAAS,iBAAiB;AAC9F,iBAAa,QAAQ,aAAa,0BAA0B,aAAa,QAAQ;AAAA;AAChF,iBAAa,QAAQ,aAAa;AACvC,YAAM,0CAAiB,EAAE,MAAM,aAAa,CAAC;AAC7C,aAAO,0CAAiB,2BAAW,SAAS,kDAAkD;AAClG;",
6
- "names": []
7
- }
@@ -1,43 +0,0 @@
1
- import { CommitType } from "@src/constant"
2
- import { mkdir, writeFile } from "fs/promises"
3
- import { join } from "path"
4
- import { getCommitMessage } from "./getCommitMessage"
5
- import { readPackageJson } from "./readPackageJson"
6
- import { writePackageJson } from "./writePackageJson"
7
- import { getPackageVersionInDependcy } from "./getPackageVersionInDependcy"
8
-
9
- const patch = `diff --git a/CHANGELOG.md b/CHANGELOG.md
10
- deleted file mode 100644
11
- index 6156ddff610079324151bcf185293609374c2001..0000000000000000000000000000000000000000
12
- diff --git a/lib/css/preflight.css b/lib/css/preflight.css
13
- index 7a0d82d46e040f2bf7b133e47380b1dc599e855c..514251188aee081e9045a3a26a6769c3717f5de6 100644
14
- --- a/lib/css/preflight.css
15
- +++ b/lib/css/preflight.css
16
- @@ -376,8 +376,8 @@ Constrain images and videos to the parent width and preserve their intrinsic asp
17
-
18
- img,
19
- video {
20
- - max-width: 100%;
21
- - height: auto;
22
- + /* max-width: 100%;
23
- + height: auto; */
24
- }
25
-
26
- /* Make elements with the HTML hidden attribute stay hidden by default */
27
- `
28
-
29
- export async function removeTailwindCssPreflight(version?: string) {
30
- version ??= await getPackageVersionInDependcy("tailwindcss")
31
- await mkdir("patches", { recursive: true })
32
- await writeFile(join("patches", `tailwindcss@${version}.patch`), patch, "utf-8")
33
- const packageJson2 = await readPackageJson()
34
- packageJson2.pnpm ??= {}
35
- packageJson2.pnpm.patchedDependencies ??= {}
36
- packageJson2.pnpm.patchedDependencies[`tailwindcss@${version}`] = `patches/tailwindcss@${version}.patch`
37
- packageJson2.scripts ??= {}
38
- if (packageJson2.scripts.preinstall && !packageJson2.scripts.preinstall.includes("only-allow pnpm"))
39
- packageJson2.scripts.preinstall = `npx only-allow pnpm && ${packageJson2.scripts.preinstall}`
40
- else packageJson2.scripts.preinstall = "npx only-allow pnpm"
41
- await writePackageJson({ data: packageJson2 })
42
- return getCommitMessage(CommitType.feature, "删除 tailwindcss 的 preflight.css 中的 img 和 video 样式")
43
- }