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 +2 -2
- package/dist/index.js.map +2 -2
- package/dist/utils/addZipDist.d.ts +5 -0
- package/dist/utils/addZipDist.js +64 -0
- package/dist/utils/addZipDist.js.map +7 -0
- package/dist/utils/downloadNpm.js +14 -14
- package/dist/utils/downloadNpm.js.map +2 -2
- package/dist/utils/getPackageVersionInDependcy.d.ts +1 -1
- package/dist/utils/getPackageVersionInDependcy.js +2 -2
- package/dist/utils/getPackageVersionInDependcy.js.map +2 -2
- package/dist/utils/index.js +6 -2
- package/dist/utils/index.js.map +2 -2
- package/dist/utils/initProject.js +6 -4
- package/dist/utils/initProject.js.map +2 -2
- package/dist/utils/tailwind.js +0 -2
- package/dist/utils/tailwind.js.map +2 -2
- package/package.json +1 -1
- package/src/index.ts +8 -7
- package/src/utils/addZipDist.ts +40 -0
- package/src/utils/downloadNpm.ts +14 -15
- package/src/utils/getPackageVersionInDependcy.ts +2 -2
- package/src/utils/index.ts +6 -2
- package/src/utils/initProject.ts +9 -5
- package/src/utils/tailwind.ts +0 -2
- package/dist/utils/removeTailwindCssPreset.d.ts +0 -1
- package/dist/utils/removeTailwindCssPreset.js +0 -71
- package/dist/utils/removeTailwindCssPreset.js.map +0 -7
- package/src/utils/removeTailwindCssPreset.ts +0 -43
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": ";;;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,iCAAoC;AACpC,8BAAiC;AACjC,wBAA2B;AAC3B,iCAAoC;
|
|
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": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -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 =
|
|
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
|
|
57
|
-
for (const
|
|
58
|
-
if (
|
|
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 (
|
|
61
|
-
await (0, import_promises.rm)((0, import_path.join)(folder, "node_modules",
|
|
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",
|
|
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:
|
|
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 {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,sBAA2C;AAC3C,kBAAqB;
|
|
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<
|
|
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;
|
|
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
|
}
|
package/dist/utils/index.js
CHANGED
|
@@ -135,7 +135,10 @@ async function downloadFromWinget({ name, id, dir, filter }) {
|
|
|
135
135
|
}
|
|
136
136
|
return 0;
|
|
137
137
|
});
|
|
138
|
-
const response2 = await fetch2(
|
|
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
|
|
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);
|
package/dist/utils/index.js.map
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/index.ts"],
|
|
4
|
-
"sourcesContent": ["import { 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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAsB;AACtB,qBAAoB;AACpB,gBAA8C;AAC9C,sBAAgE;AAEhE,gBAAwB;AACxB,kBAAqB;AAErB,yBAAiC;AACjC,oBAAyB;AACzB,kBAAiB;AACjB,mBAAsB;AAEf,SAAS,kBAAkB,OAAY,YAAY,OAAwB;AAC9E,SAAO,OAAO,UAAU,KAAK,MAAM,YAAY,SAAS,IAAI,QAAQ;AACxE;AAEO,IAAM,iBAAyB;AAAA,EAClC,MAAM;AAAA,EACN,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,eAAe;AACnB;AAEO,SAAS,YAAY,SAAqC;AAC7D,QAAM,cAAc,QAAQ,IAAI,qBAAqB;AACrD,MAAI,CAAC;AAAa,WAAO;AACzB,QAAM,MAAM;AACZ,QAAM,SAAS,YAAY,MAAM,GAAG;AACpC,MAAI,CAAC;AAAQ,WAAO;AACpB,SAAO,OAAO,CAAC;AACnB;AAEA,eAAsB,SAAS,KAAa,KAAa,UAAmB;AACxE,QAAM,EAAE,SAASA,OAAM,IAAI,MAAM,OAAO,YAAY;AACpD,QAAM,WAAW,MAAMA,OAAM,KAAK,EAAE,6BAAM,CAAC;AAC3C,aAAW,YAAY,SAAS,OAAO,KAAK,YAAY,IAAI,IAAI,GAAG,EAAE,SAAS,MAAM,GAAG,EAAE,GAAG,EAAE;AAC9F,QAAM,gBAAY,iCAAkB,kBAAK,KAAK,QAAQ,CAAC;AACvD,QAAM,IAAI,QAAQ,CAAC,SAAS,WAAW,uBAAS,KAAK,SAAS,IAAK,EAAE,KAAK,SAAS,EAAE,GAAG,UAAU,OAAO,EAAE,GAAG,SAAS,MAAM,CAAC;AAC9H,SAAO;AACX;AAEA,eAAsB,eAAe,KAAa;AAC9C,QAAM,mBAAmB;AAAA,IACrB,MAAM;AAAA,IACN,IAAI;AAAA,IACJ;AAAA,IACA,QAAQ,UAAQ,KAAK,iBAAiB,SAAS,KAAK,UAAU;AAAA,EAClE,CAAC;AACL;AAEA,eAAsB,MAAM,IAAY;AACpC,SAAO,IAAI,QAAQ,aAAW,WAAW,SAAS,EAAE,CAAC;AACzD;AA2BA,eAAsB,iBAAiB,KAAa,OAAe,cAAsB;AACrF,QAAM,OAAO,IAAI,gBAAgB;AACjC,OAAK,IAAI,SAAS,MAAM,SAAS,CAAC;AAClC,OAAK,IAAI,gCAAgC,aAAa,SAAS,CAAC;AAChE,QAAM,UAAU,IAAI,QAAQ;AAC5B,UAAQ,IAAI,gBAAgB,mCAAmC;AAC/D,QAAM,WAAW,MAAM,MAAM,oEAAoE,EAAE,QAAQ,QAAQ,SAAS,MAAM,KAAK,SAAS,EAAE,CAAC;AACnJ,QAAM,SAAsB,MAAM,SAAS,KAAK;AAChD,QAAM,SAAS,OAAO,KAAK,UAAU,CAAC,EAAE,oBAAoB,KAAK,OAAO,KAAK,UAAU,CAAC,EAAE,SAAS;AACvG;AA6DA,eAAsB,mBAAmB,EAAE,MAAM,IAAI,KAAK,OAAO,GAAuB;AACpF,QAAM,EAAE,SAASA,OAAM,IAAI,MAAM,OAAO,YAAY;AACpD,QAAM,cAAc,GAAG,CAAC,EAAE,YAAY;AACtC,QAAM,OAAO,GAAG,QAAQ,OAAO,GAAG;AAClC,QAAM,WAAW,MAAMA,OAAM,yEAAyE,eAAe,QAAQ,EAAE,6BAAM,CAAC;AACtI,QAAM,OAAyB,MAAM,SAAS,KAAK;AACnD,MAAI,CAAC,MAAM,QAAQ,IAAI;AAAG,UAAM,IAAI,MAAO,KAAa,OAAO;AAC/D,QAAM,OAAO;AACb,QAAM,UAAU,KAAK,OAAO,UAAQ,KAAK,KAAK,KAAK,IAAI,CAAC;AACxD,UAAQ,KAAK,CAAC,GAAG,MAAM;AACnB,UAAM,MAAM,EAAE,KAAK,MAAM,GAAG;AAC5B,UAAM,MAAM,EAAE,KAAK,MAAM,GAAG;AAC5B,UAAM,MAAM,KAAK,IAAI,IAAI,QAAQ,IAAI,MAAM;AAC3C,aAAS,IAAI,GAAG,IAAI,KAAK,KAAK;AAC1B,YAAM,KAAK,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI;AACvC,YAAM,KAAK,IAAI,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC,IAAI;AACvC,UAAI,KAAK;AAAI,eAAO;AACpB,UAAI,KAAK;AAAI,eAAO;AAAA,IACxB;AACA,WAAO;AAAA,EACX,CAAC;AACD,QAAM,YAAY,MAAMA,
|
|
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
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA4B;AAC5B,qBAAoB;AACpB,qBAAwB;AACxB,2BAA8B;AAC9B,0BAA6B;AAC7B,yBAA4B;AAC5B,uBAA0B;AAC1B,sBAAyB;AACzB,iCAAoC;AACpC,+BAAkC;AAClC,+BAAkC;AAClC,kBAAqB;AACrB,6BAAgC;AAChC,0BAA6B;AAC7B,qBAAwB;AACxB,yBAA4B;AAC5B,kBAAqB;
|
|
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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAA4B;AAC5B,qBAAoB;AACpB,qBAAwB;AACxB,2BAA8B;AAC9B,0BAA6B;AAC7B,yBAA4B;AAC5B,uBAA0B;AAC1B,sBAAyB;AACzB,iCAAoC;AACpC,+BAAkC;AAClC,+BAAkC;AAClC,kBAAqB;AACrB,6BAAgC;AAChC,0BAA6B;AAC7B,qBAAwB;AACxB,yBAA4B;AAC5B,kBAAqB;AACrB,wBAA2B;AAE3B,eAAsB,cAAc;AAChC,iBAAAA,QAAQ,MAAM,SAAS;AACvB,QAAM,EAAE,SAAS,SAAS,IAAI,MAAM,OAAO,UAAU;AACrD,YAAM,gDAAoB;AAC1B,QAAM,cAAc,UAAM,wCAAgB;AAC1C,QAAM,gBAAgB,OAAO,KAAK,YAAY,gBAAgB,CAAC,CAAC,EAAE,OAAO,OAAO,KAAK,YAAY,mBAAmB,CAAC,CAAC,CAAC;AACvH,MAAI,CAAC,cAAc,SAAS,OAAO,KAAK,CAAC,cAAc,SAAS,WAAW,GAAG;AAC1E,mBAAAA,QAAQ,MAAM,cAAc;AAC5B;AAAA,EACJ;AACA,MAAI;AACJ,MAAI,cAAc,KAAK,UAAQ,SAAS,MAAM,GAAG;AAC7C,WAAO,4BAAY;AAAA,EACvB,WAAW,cAAc,KAAK,UAAQ,SAAS,kBAAkB,GAAG;AAChE,WAAO,4BAAY;AAAA,EACvB,WAAW,cAAc,KAAK,UAAQ,SAAS,MAAM,GAAG;AACpD,WAAO,4BAAY;AAAA,EACvB,WAAW,cAAc,KAAK,UAAQ,SAAS,eAAe,GAAG;AAC7D,WAAO,4BAAY;AAAA,EACvB,OAAO;AACH,mBAAAA,QAAQ,MAAM,gCAAgC;AAC9C;AAAA,EACJ;AACA,YAAM,kCAAa;AACnB,YAAM,oCAAc;AAAA,IAChB,SAAS,CAAC,aAAa;AAAA,IACvB,MAAM;AAAA,EACV,CAAC;AACD,YAAM,8BAAW,EAAE,SAAS,MAAM,CAAC;AACnC,QAAM,UAAU,UAAM,4CAAkB;AACxC,MAAI,cAAc,KAAK,UAAQ,KAAK,SAAS,QAAQ,CAAC,GAAG;AACrD,UAAM,EAAE,mBAAmB,IAAI,MAAM,SAAS,OAAO;AAAA,MACjD,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,IACb,CAAC;AACD,QAAI;AAAoB,gBAAM,kCAAa;AAAA,EAC/C;AACA,QAAM,cAAc,SAAS,4BAAY,QAAQ,SAAS,4BAAY;AACtE,QAAM,UAAU,cACV,CAAC,QAAQ,UAAU,SAAS,sBAAsB,iBAAiB,UAAU,YAAY,OAAO,gBAAgB,aAAa,IAC7H,CAAC,QAAQ,UAAU,SAAS,sBAAsB,iBAAiB,YAAY,gBAAgB,oBAAoB,aAAa;AAEtI,QAAM,EAAE,QAAQ,IAAI,MAAM,SAAS,OAAO;AAAA,IACtC,MAAM;AAAA,IACN,MAAM;AAAA,IACN,SAAS;AAAA,IACT;AAAA,IACA,SAAS;AAAA,EACb,CAAC;AAED,QAAM,QAAkB,CAAC;AACzB,MAAI,QAAQ,SAAS,MAAM;AAAG,cAAM,wBAAQ;AAC5C,MAAI,QAAQ,SAAS,UAAU;AAAG,cAAM,0BAAS;AAAA;AAC5C,cAAM,gCAAY;AACvB,MAAI,QAAQ,SAAS,QAAQ;AAAG,UAAM,KAAK,QAAQ;AACnD,MAAI,QAAQ,SAAS,OAAO;AAAG,UAAM,KAAK,OAAO;AACjD,MAAI,QAAQ,SAAS,oBAAoB;AAAG,UAAM,KAAK,oBAAoB;AAC3E,MAAI,QAAQ,SAAS,eAAe;AAAG,UAAM,KAAK,eAAe;AACjE,MAAI,QAAQ,SAAS,aAAa;AAAG,UAAM,KAAK,aAAa;AAC7D,MAAI,QAAQ,SAAS,KAAK;AAAG,UAAM,KAAK,KAAK;AAC7C,MAAI,QAAQ,SAAS,cAAc;AAAG,UAAM,KAAK,cAAc;AAC/D,MAAI,QAAQ,SAAS,kBAAkB;AAAG,UAAM,KAAK,kBAAkB;AACvE,MAAI,QAAQ,SAAS,aAAa;AAAG,UAAM,KAAK,aAAa;AAE7D,YAAM,oCAAc;AAAA,IAChB,SAAS;AAAA,IACT,MAAM;AAAA,EACV,CAAC;AAED,UAAQ,MAAM;AAAA,IACV,KAAK,4BAAY;AACb,gBAAM,kBAAK;AACX;AAAA,IAEJ,KAAK,4BAAY;AACb,gBAAM,kBAAK;AACX;AAAA,IAEJ,KAAK,4BAAY;AACb,gBAAM,kBAAK;AACX;AAAA,IAEJ,KAAK,4BAAY;AACb,gBAAM,wBAAQ;AACd;AAAA,EACR;AAEA,MAAI,YAAY;AAChB,MAAI,QAAQ,SAAS,QAAQ,GAAG;AAC5B,cAAM,4BAAU,OAAO;AACvB,gBAAY;AAAA,EAChB;AACA,MAAI,CAAC;AAAW,cAAM,4CAAkB,EAAE,QAAQ,MAAM,QAAQ,CAAC;AACjE,YAAM,gCAAY,UAAU,IAAI;AAChC,iBAAAA,QAAQ,QAAQ,SAAS;AAC7B;",
|
|
6
6
|
"names": ["consola"]
|
|
7
7
|
}
|
package/dist/utils/tailwind.js
CHANGED
|
@@ -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\
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,2BAA8B;AAC9B,8BAAiC;AACjC,yBAA4B;AAC5B,+BAAkC;AAClC,8BAAiC;
|
|
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
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
|
-
|
|
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
|
+
}
|
package/src/utils/downloadNpm.ts
CHANGED
|
@@ -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 =
|
|
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
|
|
25
|
-
for (const
|
|
26
|
-
if (
|
|
27
|
-
if (
|
|
28
|
-
await rm(join(folder, "node_modules",
|
|
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",
|
|
28
|
+
await rename(join(folder, "node_modules", item), join(folder, "node_modules", name, "node_modules", item))
|
|
32
29
|
}
|
|
33
30
|
await zip({
|
|
34
|
-
input:
|
|
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+/, "")
|
package/src/utils/index.ts
CHANGED
|
@@ -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(
|
|
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
|
|
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)!
|
package/src/utils/initProject.ts
CHANGED
|
@@ -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
|
|
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",
|
package/src/utils/tailwind.ts
CHANGED
|
@@ -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
|
-
}
|