zixulu 1.40.3 → 1.40.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +4 -6
- package/dist/index.js.map +2 -2
- package/dist/utils/addPrettier.d.ts +2 -2
- package/dist/utils/addPrettier.js +2 -2
- package/dist/utils/addPrettier.js.map +1 -1
- package/dist/utils/addStartScript.d.ts +13 -0
- package/dist/utils/{addNextScript.js → addStartScript.js} +119 -27
- package/dist/utils/addStartScript.js.map +7 -0
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/replaceAssets.d.ts +3 -2
- package/dist/utils/replaceAssets.js +16 -22
- package/dist/utils/replaceAssets.js.map +3 -3
- package/package.json +1 -1
- package/src/index.ts +10 -19
- package/src/utils/addPrettier.ts +2 -2
- package/src/utils/addStartScript.ts +209 -0
- package/src/utils/index.ts +1 -1
- package/src/utils/replaceAssets.ts +10 -15
- package/dist/utils/addExpressScript.d.ts +0 -7
- package/dist/utils/addExpressScript.js +0 -154
- package/dist/utils/addExpressScript.js.map +0 -7
- package/dist/utils/addNextScript.d.ts +0 -7
- package/dist/utils/addNextScript.js.map +0 -7
- package/src/utils/addExpressScript.ts +0 -121
- package/src/utils/addNextScript.ts +0 -114
package/dist/index.js
CHANGED
|
@@ -37,17 +37,16 @@ var import_vite = require("./utils/vite");
|
|
|
37
37
|
var import_commander = require("commander");
|
|
38
38
|
var import_path = require("path");
|
|
39
39
|
var import_actionWithBackup = require("./utils/actionWithBackup");
|
|
40
|
-
var
|
|
40
|
+
var import_addStartScript = require("./utils/addStartScript");
|
|
41
41
|
var import_createBrowserlistrc = require("./utils/createBrowserlistrc");
|
|
42
42
|
var import_getCommitMessage = require("./utils/getCommitMessage");
|
|
43
|
+
var import_getHeaders = require("./utils/getHeaders");
|
|
43
44
|
var import_readPackageJsonSync = require("./utils/readPackageJsonSync");
|
|
44
45
|
var import_removeTailwindCssPreset = require("./utils/removeTailwindCssPreset");
|
|
45
46
|
var import_replaceAssets = require("./utils/replaceAssets");
|
|
46
47
|
var import_setGlobal = require("./utils/setGlobal");
|
|
47
48
|
var import_upgradeRsbuild = require("./utils/upgradeRsbuild");
|
|
48
49
|
var import_upgradeWorkspaceDependceny = require("./utils/upgradeWorkspaceDependceny");
|
|
49
|
-
var import_addExpressScript = require("./utils/addExpressScript");
|
|
50
|
-
var import_getHeaders = require("./utils/getHeaders");
|
|
51
50
|
var program = new import_commander.Command();
|
|
52
51
|
var pkg = (0, import_readPackageJsonSync.readPackageJsonSync)((0, import_path.resolve)(__dirname, "../"));
|
|
53
52
|
program.name("格数科技").version(pkg.version);
|
|
@@ -95,13 +94,12 @@ program.command("replace-alias").alias("ra").description("替换路径别名").a
|
|
|
95
94
|
program.command("pnpm").description("设置 pnpm 配置").action(import_pnpm.pnpm);
|
|
96
95
|
program.command("rollup").description("rollup 打包").action(import_rollup.rollup);
|
|
97
96
|
program.command("browserlistrc").alias("blr").description("添加 browserlistrc 配置").action(import_createBrowserlistrc.createBrowserlistrc);
|
|
98
|
-
program.command("asset").description("替换文件中的资源地址").argument("
|
|
97
|
+
program.command("asset").description("替换文件中的资源地址").argument("input", "静态文件夹路径").option("-b, --base <base>", "资源地址 BaseUrl").option("-o, --output <output>", "输出文件夹").option("-p, --proxy", "是否使用代理").action((input, { proxy, base, output }) => (0, import_replaceAssets.replaceAssets)({ base, input, proxy, output }));
|
|
99
98
|
program.command("upgrade-rsbuild").alias("ur").description("升级 rsbuild").option("-r, --registry <registry>", "npm 源地址,可以是 npm、taobao、tencent 或者自定义地址").option("-p, --proxy", "是否使用代理").action(async (options) => {
|
|
100
99
|
(0, import_setGlobal.setGlobal)(options);
|
|
101
100
|
await (0, import_actionWithBackup.actionWithBackup)(() => (0, import_upgradeRsbuild.upgradeRsbuild)())();
|
|
102
101
|
});
|
|
103
|
-
program.command("add-
|
|
104
|
-
program.command("add-next-script").alias("ans").option("-p, --port <port>", "端口地址").option("-c, --core <core>", "实例数").option("-l, --localhost", "是否只开启本地监听").option("-pem, --pemPath <pemPath>", "证书目录").description("添加 next 启动脚本").action((0, import_actionWithBackup.actionWithBackup)(import_addNextScript.addNextScript));
|
|
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 }));
|
|
105
103
|
program.command("removeTailwindCssPreflight").alias("rtp").description("删除 tailwindcss 的 preflight.css 中的 img 和 video 样式").action((0, import_actionWithBackup.actionWithBackup)(() => (0, import_removeTailwindCssPreset.removeTailwindCssPreflight)()));
|
|
106
104
|
program.command("headers").description("将浏览器中直接复制的 headers 转换为对象").action(import_getHeaders.getHeaders);
|
|
107
105
|
program.parse();
|
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 { addNextScript } from \"./utils/addNextScript\"\r\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\r\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\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\nimport { addExpressScript } from \"./utils/addExpressScript\"\r\nimport { getHeaders } from \"./utils/getHeaders\"\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(\"dir\", \"静态文件夹路径\")\r\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action((dir, { proxy, base }) => replaceAssets({ base, dir, proxy }))\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-express-script\")\r\n .alias(\"aes\")\r\n .option(\"-p, --port <port>\", \"端口地址\")\r\n .option(\"-c, --core <core>\", \"实例数\")\r\n .option(\"-l, --localhost\", \"是否只开启本地监听\")\r\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\r\n .description(\"添加 express 启动脚本\")\r\n .action(actionWithBackup(addExpressScript))\r\n\r\nprogram\r\n .command(\"add-next-script\")\r\n .alias(\"ans\")\r\n .option(\"-p, --port <port>\", \"端口地址\")\r\n .option(\"-c, --core <core>\", \"实例数\")\r\n .option(\"-l, --localhost\", \"是否只开启本地监听\")\r\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\r\n .description(\"添加 next 启动脚本\")\r\n .action(actionWithBackup(addNextScript))\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,
|
|
4
|
+
"sourcesContent": ["#!/usr/bin/env node\r\n\r\nimport { CommitType } from \"@constant/index\"\r\nimport { addAntd } from \"@utils/addAntd\"\r\nimport { addGitignore } from \"@utils/addGitignore\"\r\nimport { addFolderPathAlias, replacePathAlias } from \"@utils/addPathAlias\"\r\nimport { addPrettier } from \"@utils/addPrettier\"\r\nimport { addPrisma } from \"@utils/addPrisma\"\r\nimport { arrowToFunction } from \"@utils/arrowToFunction\"\r\nimport { betaVersion } from \"@utils/betaVersion\"\r\nimport { checkType } from \"@utils/checkType\"\r\nimport { code2Snippet } from \"@utils/code2Snippet\"\r\nimport { downloadLatestSoftware } from \"@utils/downloadLatestSoftware\"\r\nimport { downloadNpm } from \"@utils/downloadNpm\"\r\nimport { generatePrisma } from \"@utils/generatePrisma\"\r\nimport { initProject } from \"@utils/initProject\"\r\nimport { interfaceToType } from \"@utils/interfaceToType\"\r\nimport { killProcessByPort } from \"@utils/killProcessByPort\"\r\nimport { next } from \"@utils/next\"\r\nimport { pnpm } from \"@utils/pnpm\"\r\nimport { reinstall } from \"@utils/reinstall\"\r\nimport { removeComment } from \"@utils/removeComment\"\r\nimport { removeESLint } from \"@utils/removeESLint\"\r\nimport { removeFileOrFolderFromGit } from \"@utils/removeFileOrFolderFromGit\"\r\nimport { rollup } from \"@utils/rollup\"\r\nimport { rsbuild } from \"@utils/rsbuild\"\r\nimport { setFatherConfig } from \"@utils/setFatherConfig\"\r\nimport { setGitProxy } from \"@utils/setGitProxy\"\r\nimport { setRegistry } from \"@utils/setRegistry\"\r\nimport { setShellProxy } from \"@utils/setShellProxy\"\r\nimport { sortPackageJson } from \"@utils/sortPackageJson\"\r\nimport { syncVscode } from \"@utils/syncVscode\"\r\nimport { tailwind } from \"@utils/tailwind\"\r\nimport { upgradeDependency } from \"@utils/upgradeDependency\"\r\nimport { vite } from \"@utils/vite\"\r\nimport { Command } from \"commander\"\r\nimport { resolve } from \"path\"\r\nimport { actionWithBackup } from \"./utils/actionWithBackup\"\r\nimport { addStartScript } from \"./utils/addStartScript\"\r\nimport { createBrowserlistrc } from \"./utils/createBrowserlistrc\"\r\nimport { getCommitMessage } from \"./utils/getCommitMessage\"\r\nimport { getHeaders } from \"./utils/getHeaders\"\r\nimport { readPackageJsonSync } from \"./utils/readPackageJsonSync\"\r\nimport { removeTailwindCssPreflight } from \"./utils/removeTailwindCssPreset\"\r\nimport { replaceAssets } from \"./utils/replaceAssets\"\r\nimport { setGlobal } from \"./utils/setGlobal\"\r\nimport { upgradeRsbuild } from \"./utils/upgradeRsbuild\"\r\nimport { upgradeWorkspaceDependceny } from \"./utils/upgradeWorkspaceDependceny\"\r\n\r\nconst program = new Command()\r\n\r\nconst pkg = readPackageJsonSync(resolve(__dirname, \"../\"))\r\n\r\nprogram.name(\"格数科技\").version(pkg.version)\r\n\r\nprogram\r\n .command(\"eslint\")\r\n .description(\"删除 ESLint 相关配置\")\r\n .action(actionWithBackup(removeESLint, getCommitMessage(CommitType.feature, \"删除 ESLint 相关配置\")))\r\n\r\nprogram\r\n .command(\"prettier\")\r\n .description(\"添加 prettier 配置\")\r\n .action(actionWithBackup(addPrettier, getCommitMessage(CommitType.feature, \"添加 prettier 配置文件\")))\r\n\r\nprogram\r\n .command(\"vite\")\r\n .description(\"初始化 vite 配置\")\r\n .action(actionWithBackup(vite, getCommitMessage(CommitType.feature, \"初始化 vite 配置\")))\r\n\r\nprogram\r\n .command(\"rsbuild\")\r\n .description(\"初始化 rsbuild 配置\")\r\n .action(actionWithBackup(rsbuild, getCommitMessage(CommitType.feature, \"初始化 rsbuild 配置\")))\r\n\r\nprogram\r\n .command(\"next\")\r\n .description(\"初始化 next 配置\")\r\n .action(actionWithBackup(next, getCommitMessage(CommitType.feature, \"初始化 next 配置\")))\r\n\r\nprogram\r\n .command(\"tailwind\")\r\n .description(\"添加 tailwind 配置\")\r\n .action(actionWithBackup(tailwind, getCommitMessage(CommitType.feature, \"添加 tailwind 配置\")))\r\n\r\nprogram\r\n .command(\"remove-comment\")\r\n .description(\"删除文件注释\")\r\n .argument(\"path\", \"文件路径\")\r\n .action(actionWithBackup(removeComment, getCommitMessage(CommitType.feature, \"删除文件注释\")))\r\n\r\nprogram\r\n .command(\"father\")\r\n .alias(\"fs\")\r\n .description(\"初始化 father 项目配置\")\r\n .action(actionWithBackup(setFatherConfig, getCommitMessage(CommitType.feature, \"初始化 father 项目配置\")))\r\n\r\nprogram\r\n .command(\"upgrade-dependency\")\r\n .alias(\"ud\")\r\n .description(\"升级项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async optios => {\r\n setGlobal(optios)\r\n await actionWithBackup(() => upgradeDependency())()\r\n })\r\n\r\nprogram\r\n .command(\"upgrade-workspace-dependency\")\r\n .alias(\"uwd\")\r\n .description(\"升级工作区项目依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .argument(\"[dir]\", \"项目目录\", \"packages\")\r\n .action(async (dir, options) => {\r\n setGlobal(options)\r\n await upgradeWorkspaceDependceny(dir)\r\n })\r\n\r\nprogram.command(\"registry\").description(\"设置 npm registry\").action(setRegistry)\r\n\r\nprogram\r\n .command(\"sort-package-json\")\r\n .alias(\"spj\")\r\n .description(\"对 package.json 中的依赖进行排序\")\r\n .action(actionWithBackup(sortPackageJson, getCommitMessage(CommitType.feature, \"对 package.json 中的依赖进行排序\")))\r\n\r\nprogram\r\n .command(\"arrow-to-function\")\r\n .alias(\"a2f\")\r\n .description(\"将箭头函数组件转换为函数组件\")\r\n .action(actionWithBackup(arrowToFunction, getCommitMessage(CommitType.feature, \"将箭头函数组件转换为函数组件\")))\r\n\r\nprogram\r\n .command(\"interface-to-type\")\r\n .alias(\"i2t\")\r\n .description(\"将 interface 转换为 type\")\r\n .action(actionWithBackup(interfaceToType, getCommitMessage(CommitType.feature, \"将 interface 转换为 type\")))\r\n\r\nprogram\r\n .command(\"gitignore\")\r\n .description(\"添加 .gitignore 配置\")\r\n .action(actionWithBackup(addGitignore, getCommitMessage(CommitType.feature, \"添加 .gitignore 配置\")))\r\n\r\nprogram.command(\"git-proxy\").alias(\"gp\").description(\"设置 git 代理\").action(setGitProxy)\r\n\r\nprogram.command(\"shell-proxy\").alias(\"sp\").description(\"设置 Shell 代理\").action(setShellProxy)\r\n\r\nprogram.command(\"download-software\").alias(\"ds\").description(\"下载最新版软件\").action(downloadLatestSoftware)\r\n\r\nprogram.command(\"vscode\").alias(\"vsc\").description(\"同步 VS Code 配置\").action(syncVscode)\r\n\r\nprogram.command(\"kill-port\").description(\"根据端口号杀死进程\").argument(\"port\", \"端口号\").action(killProcessByPort)\r\n\r\nprogram.command(\"rm-git\").argument(\"path\", \"要移除的文件或文件夹\").action(removeFileOrFolderFromGit)\r\n\r\nprogram.command(\"npm-download\").alias(\"nd\").description(\"下载 npm 包\").argument(\"name\", \"包名\").action(downloadNpm)\r\n\r\nprogram\r\n .command(\"prisma\")\r\n .description(\"添加 prisma 配置\")\r\n .action(actionWithBackup(addPrisma, getCommitMessage(CommitType.feature, \"添加 prisma 配置\")))\r\n\r\nprogram.command(\"prisma-generate\").alias(\"pg\").description(\"生成 prisma client\").action(generatePrisma)\r\n\r\nprogram\r\n .command(\"antd\")\r\n .description(\"添加 antd 配置\")\r\n .action(actionWithBackup(addAntd, getCommitMessage(CommitType.feature, \"添加 antd 配置\")))\r\n\r\nprogram\r\n .command(\"init\")\r\n .description(\"初始化项目\")\r\n .action(actionWithBackup(initProject, getCommitMessage(CommitType.feature, \"初始化项目\")))\r\n\r\nprogram.command(\"tsc\").description(\"类型检查\").action(checkType)\r\n\r\nprogram.command(\"beta-version\").alias(\"bv\").description(\"设置版本号\").action(betaVersion)\r\n\r\nprogram\r\n .command(\"reinstall\")\r\n .alias(\"ri\")\r\n .description(\"重新安装依赖\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .action(async options => {\r\n setGlobal(options)\r\n reinstall()\r\n })\r\n\r\nprogram.command(\"snippet\").alias(\"sn\").description(\"生成 vscode snippet\").argument(\"path\", \"文件路径\").action(code2Snippet)\r\n\r\nprogram.command(\"add-alias\").alias(\"aa\").description(\"添加路径别名\").action(actionWithBackup(addFolderPathAlias))\r\n\r\nprogram.command(\"replace-alias\").alias(\"ra\").description(\"替换路径别名\").action(actionWithBackup(replacePathAlias))\r\n\r\nprogram.command(\"pnpm\").description(\"设置 pnpm 配置\").action(pnpm)\r\n\r\nprogram.command(\"rollup\").description(\"rollup 打包\").action(rollup)\r\n\r\nprogram.command(\"browserlistrc\").alias(\"blr\").description(\"添加 browserlistrc 配置\").action(createBrowserlistrc)\r\n\r\nprogram\r\n .command(\"asset\")\r\n .description(\"替换文件中的资源地址\")\r\n .argument(\"input\", \"静态文件夹路径\")\r\n .option(\"-b, --base <base>\", \"资源地址 BaseUrl\")\r\n .option(\"-o, --output <output>\", \"输出文件夹\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action((input, { proxy, base, output }) => replaceAssets({ base, input, proxy, output }))\r\n\r\nprogram\r\n .command(\"upgrade-rsbuild\")\r\n .alias(\"ur\")\r\n .description(\"升级 rsbuild\")\r\n .option(\"-r, --registry <registry>\", \"npm 源地址,可以是 npm、taobao、tencent 或者自定义地址\")\r\n .option(\"-p, --proxy\", \"是否使用代理\")\r\n .action(async options => {\r\n setGlobal(options)\r\n await actionWithBackup(() => upgradeRsbuild())()\r\n })\r\n\r\nprogram\r\n .command(\"add-start-script\")\r\n .alias(\"ass\")\r\n .argument(\"type\", \"启动脚本类型:express、next\")\r\n .option(\"-p, --port <port>\", \"端口地址\")\r\n .option(\"-c, --core <core>\", \"实例数\")\r\n .option(\"-h, --hostname <hostname>\", \"主机名\")\r\n .option(\"-pem, --pemPath <pemPath>\", \"证书目录\")\r\n .description(\"添加 express 启动脚本\")\r\n .action(async (type, { port, core, pemPath }) => actionWithBackup(addStartScript)({ type, port, core, pemPath }))\r\n\r\nprogram\r\n .command(\"removeTailwindCssPreflight\")\r\n .alias(\"rtp\")\r\n .description(\"删除 tailwindcss 的 preflight.css 中的 img 和 video 样式\")\r\n .action(actionWithBackup(() => removeTailwindCssPreflight()))\r\n\r\nprogram.command(\"headers\").description(\"将浏览器中直接复制的 headers 转换为对象\").action(getHeaders)\r\n\r\nprogram.parse()\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const prettierConfigText = "module.exports = {\n semi: false,\n tabWidth: 4,\n arrowParens: \"avoid\",\n printWidth:
|
|
2
|
-
export declare const prettierConfigTextWithTailwind = "module.exports = {\n plugins: [\"prettier-plugin-tailwindcss\"],\n semi: false,\n tabWidth: 4,\n arrowParens: \"avoid\",\n printWidth:
|
|
1
|
+
export declare const prettierConfigText = "module.exports = {\n semi: false,\n tabWidth: 4,\n arrowParens: \"avoid\",\n printWidth: 160,\n trailingComma: \"none\"\n}\n";
|
|
2
|
+
export declare const prettierConfigTextWithTailwind = "module.exports = {\n plugins: [\"prettier-plugin-tailwindcss\"],\n semi: false,\n tabWidth: 4,\n arrowParens: \"avoid\",\n printWidth: 160,\n trailingComma: \"none\"\n}\n";
|
|
3
3
|
/** 添加 prettier */
|
|
4
4
|
export declare function addPrettier(): Promise<void>;
|
|
@@ -42,7 +42,7 @@ var prettierConfigText = `module.exports = {
|
|
|
42
42
|
semi: false,
|
|
43
43
|
tabWidth: 4,
|
|
44
44
|
arrowParens: "avoid",
|
|
45
|
-
printWidth:
|
|
45
|
+
printWidth: 160,
|
|
46
46
|
trailingComma: "none"
|
|
47
47
|
}
|
|
48
48
|
`;
|
|
@@ -51,7 +51,7 @@ var prettierConfigTextWithTailwind = `module.exports = {
|
|
|
51
51
|
semi: false,
|
|
52
52
|
tabWidth: 4,
|
|
53
53
|
arrowParens: "avoid",
|
|
54
|
-
printWidth:
|
|
54
|
+
printWidth: 160,
|
|
55
55
|
trailingComma: "none"
|
|
56
56
|
}
|
|
57
57
|
`;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/utils/addPrettier.ts"],
|
|
4
|
-
"sourcesContent": ["import consola from \"consola\"\r\nimport { writeFile } from \"fs/promises\"\r\nimport { AddDependenciesConfig, addDependency } from \"./addDependency\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\n\r\nexport const prettierConfigText = `module.exports = {\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth:
|
|
4
|
+
"sourcesContent": ["import consola from \"consola\"\r\nimport { writeFile } from \"fs/promises\"\r\nimport { AddDependenciesConfig, addDependency } from \"./addDependency\"\r\nimport { readPackageJson } from \"./readPackageJson\"\r\n\r\nexport const prettierConfigText = `module.exports = {\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\n\r\nexport const prettierConfigTextWithTailwind = `module.exports = {\r\n plugins: [\"prettier-plugin-tailwindcss\"],\r\n semi: false,\r\n tabWidth: 4,\r\n arrowParens: \"avoid\",\r\n printWidth: 160,\r\n trailingComma: \"none\"\r\n}\r\n`\r\n\r\n/** 添加 prettier */\r\nexport async function addPrettier() {\r\n consola.start(\"开始添加 prettier 配置\")\r\n const packageJson = await readPackageJson()\r\n const tailwind = Object.keys(packageJson.dependencies ?? {}).includes(\"tailwindcss\") || Object.keys(packageJson.devDependencies ?? {}).includes(\"tailwindcss\")\r\n await writeFile(\"./prettier.config.cjs\", tailwind ? prettierConfigTextWithTailwind : prettierConfigText)\r\n const config: AddDependenciesConfig = {\r\n package: [\"prettier\"],\r\n type: \"devDependencies\"\r\n }\r\n if (tailwind) (config.package as string[]).push(\"prettier-plugin-tailwindcss\")\r\n await addDependency(config)\r\n consola.success(\"添加 prettier 配置成功\")\r\n}\r\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAoB;AACpB,sBAA0B;AAC1B,2BAAqD;AACrD,6BAAgC;AAEzB,IAAM,qBAAqB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAS3B,IAAM,iCAAiC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAW9C,eAAsB,cAAc;AAChC,iBAAAA,QAAQ,MAAM,kBAAkB;AAChC,QAAM,cAAc,UAAM,wCAAgB;AAC1C,QAAM,WAAW,OAAO,KAAK,YAAY,gBAAgB,CAAC,CAAC,EAAE,SAAS,aAAa,KAAK,OAAO,KAAK,YAAY,mBAAmB,CAAC,CAAC,EAAE,SAAS,aAAa;AAC7J,YAAM,2BAAU,yBAAyB,WAAW,iCAAiC,kBAAkB;AACvG,QAAM,SAAgC;AAAA,IAClC,SAAS,CAAC,UAAU;AAAA,IACpB,MAAM;AAAA,EACV;AACA,MAAI;AAAU,IAAC,OAAO,QAAqB,KAAK,6BAA6B;AAC7E,YAAM,oCAAc,MAAM;AAC1B,iBAAAA,QAAQ,QAAQ,kBAAkB;AACtC;",
|
|
6
6
|
"names": ["consola"]
|
|
7
7
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
declare const scripts: {
|
|
2
|
+
express: string;
|
|
3
|
+
next: string;
|
|
4
|
+
};
|
|
5
|
+
export type AddStartScriptOptions = {
|
|
6
|
+
type: keyof typeof scripts;
|
|
7
|
+
pemPath?: string;
|
|
8
|
+
port?: string;
|
|
9
|
+
core?: string;
|
|
10
|
+
hostname?: string;
|
|
11
|
+
};
|
|
12
|
+
export declare function addStartScript({ type, pemPath, port, core, hostname }: AddStartScriptOptions): Promise<string>;
|
|
13
|
+
export {};
|
|
@@ -26,12 +26,12 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
));
|
|
27
27
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
28
|
|
|
29
|
-
// src/utils/
|
|
30
|
-
var
|
|
31
|
-
__export(
|
|
32
|
-
|
|
29
|
+
// src/utils/addStartScript.ts
|
|
30
|
+
var addStartScript_exports = {};
|
|
31
|
+
__export(addStartScript_exports, {
|
|
32
|
+
addStartScript: () => addStartScript
|
|
33
33
|
});
|
|
34
|
-
module.exports = __toCommonJS(
|
|
34
|
+
module.exports = __toCommonJS(addStartScript_exports);
|
|
35
35
|
var import_consola = __toESM(require("consola"));
|
|
36
36
|
var import_promises = require("fs/promises");
|
|
37
37
|
var import_addDependency = require("./addDependency");
|
|
@@ -60,7 +60,71 @@ async function main() {
|
|
|
60
60
|
|
|
61
61
|
main()
|
|
62
62
|
`;
|
|
63
|
-
var
|
|
63
|
+
var expressScript = `// @ts-check
|
|
64
|
+
import compression from "compression"
|
|
65
|
+
import cors from "cors"
|
|
66
|
+
import { config } from "dotenv"
|
|
67
|
+
import express from "express"
|
|
68
|
+
import { readFile } from "fs/promises"
|
|
69
|
+
import { createServer as createHttpServer } from "http"
|
|
70
|
+
import { createServer as createHttpsServer } from "https"
|
|
71
|
+
import { join, resolve } from "path"
|
|
72
|
+
import { readFile } from "fs/promises"
|
|
73
|
+
import morgan from "morgan"
|
|
74
|
+
|
|
75
|
+
config()
|
|
76
|
+
|
|
77
|
+
export async function createServer(app) {
|
|
78
|
+
app.disable("x-powered-by")
|
|
79
|
+
app.use(compression())
|
|
80
|
+
app.use(cors())
|
|
81
|
+
app.use(morgan("tiny"))
|
|
82
|
+
|
|
83
|
+
const PEM_PATH = process.env.PEM_PATH
|
|
84
|
+
const HTTPS = !!PEM_PATH
|
|
85
|
+
const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80
|
|
86
|
+
const HOSTNAME = process.env.HOSTNAME
|
|
87
|
+
|
|
88
|
+
if (!HTTPS) return createHttpServer(app).listen(PORT, HOSTNAME)
|
|
89
|
+
|
|
90
|
+
const key = await readFile(join(PEM_PATH, "privkey.pem"), "utf8")
|
|
91
|
+
const cert = await readFile(join(PEM_PATH, "cert.pem"), "utf8")
|
|
92
|
+
const ca = await readFile(join(PEM_PATH, "chain.pem"), "utf8")
|
|
93
|
+
|
|
94
|
+
createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
async function main() {
|
|
99
|
+
const PEM_PATH = process.env.PEM_PATH
|
|
100
|
+
const https = !!PEM_PATH
|
|
101
|
+
const PORT = process.env.PORT ? Number(process.env.PORT) : https ? 443 : 80
|
|
102
|
+
const HOSTNAME = process.env.HOSTNAME
|
|
103
|
+
const ROOT = process.env.ROOT || "dist"
|
|
104
|
+
if (!!process.env.BASE && !process.env.BASE.startsWith("/")) throw new Error("BASE 必须以 / 开头")
|
|
105
|
+
const BASE = process.env.BASE || "/"
|
|
106
|
+
|
|
107
|
+
const app = express()
|
|
108
|
+
|
|
109
|
+
app.use(cors())
|
|
110
|
+
|
|
111
|
+
app.use(\`\${BASE.replace(/\\/+$/, "")}/\`, express.static(ROOT))
|
|
112
|
+
|
|
113
|
+
app.get(\`\${BASE.replace(/\\/+$/, "")}/*\`, async (request, response) => response.sendFile(resolve(ROOT, "index.html")))
|
|
114
|
+
|
|
115
|
+
if (BASE !== "/") app.get("/", async (request, response) => response.redirect(BASE))
|
|
116
|
+
|
|
117
|
+
if (!https) return createHttpServer(app).listen(PORT, HOSTNAME)
|
|
118
|
+
|
|
119
|
+
const key = await readFile(join(PEM_PATH, "privkey.pem"), "utf8")
|
|
120
|
+
const cert = await readFile(join(PEM_PATH, "cert.pem"), "utf8")
|
|
121
|
+
const ca = await readFile(join(PEM_PATH, "chain.pem"), "utf8")
|
|
122
|
+
createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
main()
|
|
126
|
+
`;
|
|
127
|
+
var nextScript = `// @ts-check
|
|
64
128
|
import { config } from "dotenv"
|
|
65
129
|
import { readFile } from "fs/promises"
|
|
66
130
|
import { checkPort } from "get-port-please"
|
|
@@ -68,43 +132,71 @@ import { createServer as createHttpServer } from "http"
|
|
|
68
132
|
import { createServer as createHttpsServer } from "https"
|
|
69
133
|
import next from "next"
|
|
70
134
|
import { join } from "path"
|
|
135
|
+
import compression from "compression"
|
|
136
|
+
import cors from "cors"
|
|
137
|
+
import express from "express"
|
|
138
|
+
|
|
139
|
+
|
|
140
|
+
import morgan from "morgan"
|
|
71
141
|
|
|
72
142
|
config()
|
|
73
143
|
|
|
144
|
+
|
|
145
|
+
export async function createServer(app: Express) {
|
|
146
|
+
app.disable("x-powered-by")
|
|
147
|
+
app.use(compression())
|
|
148
|
+
app.use(cors())
|
|
149
|
+
app.use(morgan("tiny"))
|
|
150
|
+
|
|
151
|
+
const PEM_PATH = process.env.PEM_PATH
|
|
152
|
+
const HTTPS = !!PEM_PATH
|
|
153
|
+
const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80
|
|
154
|
+
const HOSTNAME = process.env.HOSTNAME
|
|
155
|
+
|
|
156
|
+
if (!HTTPS) return createHttpServer(app).listen(PORT, HOSTNAME)
|
|
157
|
+
|
|
158
|
+
const key = await readFile(join(PEM_PATH, "privkey.pem"), "utf8")
|
|
159
|
+
const cert = await readFile(join(PEM_PATH, "cert.pem"), "utf8")
|
|
160
|
+
const ca = await readFile(join(PEM_PATH, "chain.pem"), "utf8")
|
|
161
|
+
|
|
162
|
+
createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)
|
|
163
|
+
}
|
|
164
|
+
|
|
74
165
|
async function main() {
|
|
75
166
|
const PEM_PATH = process.env.PEM_PATH
|
|
76
|
-
const
|
|
77
|
-
const PORT = process.env.PORT ? Number(process.env.PORT) :
|
|
78
|
-
const
|
|
167
|
+
const HTTPS = !!PEM_PATH
|
|
168
|
+
const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80
|
|
169
|
+
const HOSTNAME = process.env.HOSTNAME
|
|
79
170
|
if (!checkPort(PORT)) throw new Error(\`无效的端口号: \${PORT}\`)
|
|
80
|
-
|
|
171
|
+
|
|
172
|
+
const app = next({ experimentalHttpsServer: HTTPS })
|
|
81
173
|
const handle = app.getRequestHandler()
|
|
82
174
|
await app.prepare()
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
else server.listen(PORT)
|
|
87
|
-
return
|
|
88
|
-
}
|
|
175
|
+
|
|
176
|
+
if (!HTTPS) return createHttpServer((request, response) => handle(request, response)).listen(PORT, HOSTNAME)
|
|
177
|
+
|
|
89
178
|
const key = await readFile(join(PEM_PATH, "privkey.pem"), "utf8")
|
|
90
179
|
const cert = await readFile(join(PEM_PATH, "cert.pem"), "utf8")
|
|
91
180
|
const ca = await readFile(join(PEM_PATH, "chain.pem"), "utf8")
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
else server.listen(PORT)
|
|
181
|
+
|
|
182
|
+
createHttpsServer({ key, cert, ca }, (request, response) => handle(request, response)).listen(PORT, HOSTNAME)
|
|
95
183
|
}
|
|
96
184
|
|
|
97
185
|
main()
|
|
98
186
|
`;
|
|
99
|
-
|
|
187
|
+
var scripts = {
|
|
188
|
+
express: expressScript,
|
|
189
|
+
next: nextScript
|
|
190
|
+
};
|
|
191
|
+
async function addStartScript({ type, pemPath, port, core, hostname }) {
|
|
100
192
|
await (0, import_addDependency.addDependency)({
|
|
101
|
-
package: ["dotenv", "get-port-please"],
|
|
193
|
+
package: ["cors", "dotenv", "express", "get-port-please"],
|
|
102
194
|
type: "devDependencies"
|
|
103
195
|
});
|
|
104
196
|
await (0, import_promises.mkdir)("scripts", { recursive: true });
|
|
105
197
|
await (0, import_promises.writeFile)("scripts/start.mjs", script, "utf-8");
|
|
106
198
|
import_consola.default.success("已添加 scripts/start.js");
|
|
107
|
-
await (0, import_promises.writeFile)("scripts/server.mjs",
|
|
199
|
+
await (0, import_promises.writeFile)("scripts/server.mjs", scripts[type], "utf-8");
|
|
108
200
|
import_consola.default.success("已添加 scripts/server.js");
|
|
109
201
|
let env = "";
|
|
110
202
|
try {
|
|
@@ -126,11 +218,11 @@ PORT="${port ?? ""}"`;
|
|
|
126
218
|
else
|
|
127
219
|
env += `
|
|
128
220
|
CORE="${core ?? ""}"`;
|
|
129
|
-
if (/^ *
|
|
130
|
-
env = env.replace(/^ *
|
|
221
|
+
if (/^ *HOSTNAME=/m.test(env))
|
|
222
|
+
env = env.replace(/^ *HOSTNAME=.*$/m, `HOSTNAME="${hostname || ""}"`);
|
|
131
223
|
else
|
|
132
224
|
env += `
|
|
133
|
-
|
|
225
|
+
HOSTNAME="${hostname || ""}"`;
|
|
134
226
|
await (0, import_promises.writeFile)(".env", env, "utf-8");
|
|
135
227
|
const packageJson = await (0, import_readPackageJson.readPackageJson)();
|
|
136
228
|
packageJson.scripts ??= {};
|
|
@@ -142,6 +234,6 @@ LOCALHOST="${localhost ? "true" : "false"}"`;
|
|
|
142
234
|
}
|
|
143
235
|
// Annotate the CommonJS export names for ESM import in node:
|
|
144
236
|
0 && (module.exports = {
|
|
145
|
-
|
|
237
|
+
addStartScript
|
|
146
238
|
});
|
|
147
|
-
//# sourceMappingURL=
|
|
239
|
+
//# sourceMappingURL=addStartScript.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/utils/addStartScript.ts"],
|
|
4
|
+
"sourcesContent": ["import consola from \"consola\"\r\nimport { mkdir, readFile, 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 script = `// @ts-check\r\nimport { spawn } from \"child_process\"\r\nimport { config } from \"dotenv\"\r\nimport { readFile } from \"fs/promises\"\r\nimport { cpus } from \"os\"\r\n\r\nconfig()\r\n\r\nasync function main() {\r\n let core = parseInt(process.env.CORE || \"1\")\r\n if (!Number.isInteger(core)) core = 1\r\n if (core < 1) core = 1\r\n if (core > cpus().length) core = cpus().length\r\n const packageJson = JSON.parse(await readFile(\"package.json\", \"utf-8\"))\r\n\r\n spawn(\\`pm2 start scripts/server.mjs --name \\${packageJson.name} -i \\${core}\\`, { shell: true, stdio: \"inherit\" })\r\n}\r\n\r\nmain()\r\n`\r\n\r\nconst expressScript = `// @ts-check\r\nimport compression from \"compression\"\r\nimport cors from \"cors\"\r\nimport { config } from \"dotenv\"\r\nimport express from \"express\"\r\nimport { readFile } from \"fs/promises\"\r\nimport { createServer as createHttpServer } from \"http\"\r\nimport { createServer as createHttpsServer } from \"https\"\r\nimport { join, resolve } from \"path\"\r\nimport { readFile } from \"fs/promises\"\r\nimport morgan from \"morgan\"\r\n\r\nconfig()\r\n\r\nexport async function createServer(app) {\r\n app.disable(\"x-powered-by\")\r\n app.use(compression())\r\n app.use(cors())\r\n app.use(morgan(\"tiny\"))\r\n\r\n const PEM_PATH = process.env.PEM_PATH\r\n const HTTPS = !!PEM_PATH\r\n const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80\r\n const HOSTNAME = process.env.HOSTNAME\r\n\r\n if (!HTTPS) return createHttpServer(app).listen(PORT, HOSTNAME)\r\n\r\n const key = await readFile(join(PEM_PATH, \"privkey.pem\"), \"utf8\")\r\n const cert = await readFile(join(PEM_PATH, \"cert.pem\"), \"utf8\")\r\n const ca = await readFile(join(PEM_PATH, \"chain.pem\"), \"utf8\")\r\n\r\n createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)\r\n}\r\n\r\n\r\nasync function main() {\r\n const PEM_PATH = process.env.PEM_PATH\r\n const https = !!PEM_PATH\r\n const PORT = process.env.PORT ? Number(process.env.PORT) : https ? 443 : 80\r\n const HOSTNAME = process.env.HOSTNAME\r\n const ROOT = process.env.ROOT || \"dist\"\r\n if (!!process.env.BASE && !process.env.BASE.startsWith(\"/\")) throw new Error(\"BASE 必须以 / 开头\")\r\n const BASE = process.env.BASE || \"/\"\r\n\r\n const app = express()\r\n\r\n app.use(cors())\r\n\r\n app.use(\\`\\${BASE.replace(/\\\\/+$/, \"\")}/\\`, express.static(ROOT))\r\n\r\n app.get(\\`\\${BASE.replace(/\\\\/+$/, \"\")}/*\\`, async (request, response) => response.sendFile(resolve(ROOT, \"index.html\")))\r\n\r\n if (BASE !== \"/\") app.get(\"/\", async (request, response) => response.redirect(BASE))\r\n\r\n if (!https) return createHttpServer(app).listen(PORT, HOSTNAME)\r\n\r\n const key = await readFile(join(PEM_PATH, \"privkey.pem\"), \"utf8\")\r\n const cert = await readFile(join(PEM_PATH, \"cert.pem\"), \"utf8\")\r\n const ca = await readFile(join(PEM_PATH, \"chain.pem\"), \"utf8\")\r\n createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)\r\n}\r\n\r\nmain()\r\n`\r\n\r\nconst nextScript = `// @ts-check\r\nimport { config } from \"dotenv\"\r\nimport { readFile } from \"fs/promises\"\r\nimport { checkPort } from \"get-port-please\"\r\nimport { createServer as createHttpServer } from \"http\"\r\nimport { createServer as createHttpsServer } from \"https\"\r\nimport next from \"next\"\r\nimport { join } from \"path\"\r\nimport compression from \"compression\"\r\nimport cors from \"cors\"\r\nimport express from \"express\"\r\n\r\n\r\nimport morgan from \"morgan\"\r\n\r\nconfig()\r\n\r\n\r\nexport async function createServer(app: Express) {\r\n app.disable(\"x-powered-by\")\r\n app.use(compression())\r\n app.use(cors())\r\n app.use(morgan(\"tiny\"))\r\n\r\n const PEM_PATH = process.env.PEM_PATH\r\n const HTTPS = !!PEM_PATH\r\n const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80\r\n const HOSTNAME = process.env.HOSTNAME\r\n\r\n if (!HTTPS) return createHttpServer(app).listen(PORT, HOSTNAME)\r\n\r\n const key = await readFile(join(PEM_PATH, \"privkey.pem\"), \"utf8\")\r\n const cert = await readFile(join(PEM_PATH, \"cert.pem\"), \"utf8\")\r\n const ca = await readFile(join(PEM_PATH, \"chain.pem\"), \"utf8\")\r\n\r\n createHttpsServer({ key, cert, ca }, app).listen(PORT, HOSTNAME)\r\n}\r\n\r\nasync function main() {\r\n const PEM_PATH = process.env.PEM_PATH\r\n const HTTPS = !!PEM_PATH\r\n const PORT = process.env.PORT ? Number(process.env.PORT) : HTTPS ? 443 : 80\r\n const HOSTNAME = process.env.HOSTNAME\r\n if (!checkPort(PORT)) throw new Error(\\`无效的端口号: \\${PORT}\\`)\r\n \r\n const app = next({ experimentalHttpsServer: HTTPS })\r\n const handle = app.getRequestHandler()\r\n await app.prepare()\r\n\r\n if (!HTTPS) return createHttpServer((request, response) => handle(request, response)).listen(PORT, HOSTNAME)\r\n\r\n const key = await readFile(join(PEM_PATH, \"privkey.pem\"), \"utf8\")\r\n const cert = await readFile(join(PEM_PATH, \"cert.pem\"), \"utf8\")\r\n const ca = await readFile(join(PEM_PATH, \"chain.pem\"), \"utf8\")\r\n\r\n createHttpsServer({ key, cert, ca }, (request, response) => handle(request, response)).listen(PORT, HOSTNAME)\r\n}\r\n\r\nmain()\r\n`\r\n\r\nconst scripts = {\r\n express: expressScript,\r\n next: nextScript\r\n}\r\n\r\nexport type AddStartScriptOptions = {\r\n type: keyof typeof scripts\r\n pemPath?: string\r\n port?: string\r\n core?: string\r\n hostname?: string\r\n}\r\n\r\nexport async function addStartScript({ type, pemPath, port, core, hostname }: AddStartScriptOptions) {\r\n await addDependency({\r\n package: [\"cors\", \"dotenv\", \"express\", \"get-port-please\"],\r\n type: \"devDependencies\"\r\n })\r\n await mkdir(\"scripts\", { recursive: true })\r\n await writeFile(\"scripts/start.mjs\", script, \"utf-8\")\r\n consola.success(\"已添加 scripts/start.js\")\r\n await writeFile(\"scripts/server.mjs\", scripts[type], \"utf-8\")\r\n consola.success(\"已添加 scripts/server.js\")\r\n let env = \"\"\r\n try {\r\n env = await readFile(\".env\", \"utf-8\")\r\n } catch (error) {}\r\n\r\n // 添加证书目录\r\n if (/^ *PEM_PATH=/m.test(env)) env = env.replace(/^ *PEM_PATH=.*$/m, `PEM_PATH=\"${pemPath ?? \"\"}\"`)\r\n else env += `\\nPEM_PATH=\"${pemPath ?? \"\"}\"`\r\n\r\n // 添加端口号\r\n if (/^ *PORT=/m.test(env)) env = env.replace(/^ *PORT=.*$/m, `PORT=\"${port ?? \"\"}\"`)\r\n else env += `\\nPORT=\"${port ?? \"\"}\"`\r\n\r\n // 添加实例数\r\n if (/^ *CORE=/m.test(env)) env = env.replace(/^ *CORE=.*$/m, `CORE=\"${core ?? \"\"}\"`)\r\n else env += `\\nCORE=\"${core ?? \"\"}\"`\r\n\r\n // 添加主机\r\n if (/^ *HOSTNAME=/m.test(env)) env = env.replace(/^ *HOSTNAME=.*$/m, `HOSTNAME=\"${hostname || \"\"}\"`)\r\n else env += `\\nHOSTNAME=\"${hostname || \"\"}\"`\r\n\r\n await writeFile(\".env\", env, \"utf-8\")\r\n const packageJson = await readPackageJson()\r\n packageJson.scripts ??= {}\r\n packageJson.scripts.start = \"node scripts/start.mjs\"\r\n await writePackageJson({ data: packageJson })\r\n consola.success(\"已添加启动命令 start\")\r\n await installDependceny()\r\n return getCommitMessage(CommitType.feature, \"添加启动命令\")\r\n}\r\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["consola"]
|
|
7
|
+
}
|
package/dist/utils/index.js
CHANGED
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: 800,\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"],
|
|
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
5
|
"mappings": "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",
|
|
6
6
|
"names": ["fetch", "YAML", "consola"]
|
|
7
7
|
}
|