From fea0a550887e77d8e1e8293371ffb7357476e778 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E6=84=8F?= <649076408@qq.com> Date: Fri, 18 Mar 2022 16:15:31 +0800 Subject: [PATCH] others($cmd): add render package cmd --- docs/introduce/contributing.md | 97 ++++++ docs/plugin/index.md | 28 +- package.json | 14 +- packages/biu/README.md | 3 + packages/biu/package.json | 28 ++ packages/biu/src/index.ts | 5 + packages/biu/tsconfig.json | 8 + packages/tsconfig.base.json | 18 ++ pnpm-lock.yaml | 536 +++++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 2 +- scripts/bootstrap.ts | 149 +++++++++ scripts/utils.ts | 65 ++++ tsconfig.base.json | 22 ++ tsconfig.json | 24 +- 14 files changed, 949 insertions(+), 50 deletions(-) create mode 100644 docs/introduce/contributing.md create mode 100644 packages/biu/README.md create mode 100644 packages/biu/package.json create mode 100644 packages/biu/src/index.ts create mode 100644 packages/biu/tsconfig.json create mode 100644 packages/tsconfig.base.json create mode 100644 scripts/bootstrap.ts create mode 100644 scripts/utils.ts create mode 100644 tsconfig.base.json diff --git a/docs/introduce/contributing.md b/docs/introduce/contributing.md new file mode 100644 index 0000000..eacc44c --- /dev/null +++ b/docs/introduce/contributing.md @@ -0,0 +1,97 @@ + + +# 参与贡献 + +记录一下开发的相关事宜~ + +## 环境准备 + +### node 和 pnpm + +开发 BIU 需要 node 16+ 和 pnpm。node 推荐用 nvm 安装,避免权限问题的同时还随时切换 node 版本;pnpm 去[他的官网](https://pnpm.io/installation)选择一种方式安装即可。 + +### Clone 项目 + +```bash +$ git clone git@github.com:fe6/biu.git +$ cd biu +``` + +### 安装依赖 + +```bash +$ pnpm i +``` + +## 常用任务 + +### 启动 start 命令 + +本地开发 BIU 必开命令,用于编译 src 下的 TypeScript 文件到 dist 目录,同时监听文件变更,有变更时增量编译。 + +```bash +$ pnpm start +``` + +如果觉得比较慢,也可以只跑特定 pacakge 的 start 命令,比如。 + +```bash +$ cd packages/biu +$ pnpm start +``` + +### 跑 example + +demos 目录下保存了各种用于测试的例子,跑 demo 是开发 Umi 时确认功能正常的常用方式。每个 example 都配了 dev script,所以进入 example 然后执行 `pnpm start` 即可。 + +```bash +$ cd demos/hello-word +$ pnpm start +``` + +### 文档 + +文档是 vitepress。 + +```bash +$ pnpm doc:dev +``` + +然后打开提示的端口号即可。 + +### 新增 package + +新增 package 有封装脚本,无需手动复制 package.json 等文件。分两步,1)创建目录 2)执行 `pnpm bootstrap`。 + +- 直接创建 biu 文件夹,并生成新的 package + +```bash +$ pnpm bootstrap biu +``` + +- 手动创建文件夹,自动生成新是 package + +```bash +$ mkdir packages/foo +$ pnpm bootstrap +``` + +### 更新依赖 + +> 不推荐。 + +执行 `pnpm dep:update` 可更新依赖。 + +```bash +$ pnpm dep:update +``` + +由于 BIU 有针对依赖做预打包处理,更新依赖后还需检查更新的依赖是否为 devDependencies 并且有对此做依赖预打包。如果有,需要在对应 package 下执行 `pnpm build:deps` 并指定依赖,用于更新预打包的依赖文件。 + +```bash +$ pnpm build:deps --dep webpack-manifest-plugin +``` + +### 发布 + +TODO diff --git a/docs/plugin/index.md b/docs/plugin/index.md index 1ac5cbe..5cbaf7b 100644 --- a/docs/plugin/index.md +++ b/docs/plugin/index.md @@ -2,32 +2,8 @@ # 插件 -:::tip 主要项 -EMP v2 plugin 结合 webpack chain 提供对 webpack 自定义配置,详细类型 [[点击了解]](https://github.com/efoxTeam/emp/blob/26c89aa3fc5494f274a714b6b09844b66b5e1237/packages/emp/src/config/plugins.ts#L9) -::: +TODO ## 官方插件 -### [@efox/emp/plugin-vue-2](https://github.com/efoxTeam/emp/tree/next/packages/plugin-vue-2) - -- 提供 vue 2 编译支持 - -```js -const { defineConfig } = require('@efox/emp'); -const vue = require('@efox/plugin-vue-2'); -module.exports = defineConfig({ - plugins: [vue], -}); -``` - -### [@efox/emp/plugin-babel-react](https://github.com/efoxTeam/emp/tree/next/packages/plugin-babel-react) - -- 提供 react babel 编译支持 - -```js -const { defineConfig } = require('@efox/emp'); -const babelReact = require('@efox/plugin-babel-react'); -module.exports = defineConfig({ - plugins: [babelReact], -}); -``` +TODO diff --git a/package.json b/package.json index 41904c1..500827a 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "biu", "description": "Pluggable enterprise-level application framework.", "scripts": { + "bootstrap": "esno scripts/bootstrap.ts", "build": "pnpm build:pkg", "build:pkg": "pnpm run --filter=@efox/emp build && pnpm run --filter=@efox/* --filter=!@efox/emp --parallel build", "docs:dev": "vitepress dev docs --host", @@ -9,7 +10,8 @@ "docs:start": "vitepress serve docs --host", "prebuild": "[[ $CI = true ]] && npx pnpm@6 install -r --store=node_modules/.pnpm-store || echo skiping pnpm install", "lint": "pretty-quick", - "postinstall": "husky install" + "preinstall": "npx only-allow pnpm", + "prepare": "husky install" }, "repository": { "type": "git", @@ -26,11 +28,19 @@ "@commitlint/config-conventional": "^16.2.1", "@fe6/norm-git-cz-config": "^0.1.1", "@fe6/norm-prettier": "^0.1.0", + "@types/node": "^17.0.21", "cz-customizable": "^6.3.0", + "esno": "^0.14.1", "husky": "^7.0.4", + "only-allow": "^1.1.0", "prettier": "^2.5.1", "pretty-quick": "^3.1.3", - "vitepress": "^0.22.3" + "ts-node": "^10.7.0", + "ts-transform-paths": "^2.0.3", + "ttypescript": "^1.5.13", + "typescript": "^4.6.2", + "vitepress": "^0.22.3", + "zx": "4.3.0" }, "packageManager": "pnpm@6.32.0", "engines": { diff --git a/packages/biu/README.md b/packages/biu/README.md new file mode 100644 index 0000000..53c4567 --- /dev/null +++ b/packages/biu/README.md @@ -0,0 +1,3 @@ + + +# @fe6/biu diff --git a/packages/biu/package.json b/packages/biu/package.json new file mode 100644 index 0000000..f3d7496 --- /dev/null +++ b/packages/biu/package.json @@ -0,0 +1,28 @@ +{ + "name": "@fe6/biu", + "version": "0.0.0", + "description": "@fe6/biu", + "main": "dist/index.js", + "types": "dist/index.d.ts", + "files": [ + "dist" + ], + "scripts": { + "build": "pnpm ttsc", + "build:deps": "pnpm esno ../../scripts/bundleDeps.ts", + "start": "pnpm ttsc -w" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/fe6/biu.git", + "directory": "packages/biu" + }, + "authors": [ + "tainyi <649076408@qq.com> (https://github.com/iq9891)" + ], + "license": "MIT", + "bugs": "https://github.com/fe6/biu/issues", + "publishConfig": { + "access": "public" + } +} diff --git a/packages/biu/src/index.ts b/packages/biu/src/index.ts new file mode 100644 index 0000000..261bf9a --- /dev/null +++ b/packages/biu/src/index.ts @@ -0,0 +1,5 @@ +/** @format */ + +export default () => { + return '@fe6/biu'; +}; diff --git a/packages/biu/tsconfig.json b/packages/biu/tsconfig.json new file mode 100644 index 0000000..6f80401 --- /dev/null +++ b/packages/biu/tsconfig.json @@ -0,0 +1,8 @@ +{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "dist" + }, + "include": ["src"] +} diff --git a/packages/tsconfig.base.json b/packages/tsconfig.base.json new file mode 100644 index 0000000..2fc881b --- /dev/null +++ b/packages/tsconfig.base.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "target": "es2015", + "module": "commonjs", + "moduleResolution": "node", + "strict": true, + "declaration": true, + "declarationMap": true, + "noUnusedLocals": false, + "esModuleInterop": true, + "skipLibCheck": true, + "skipDefaultLibCheck": true, + "resolveJsonModule": true, + "allowSyntheticDefaultImports": true, + "plugins": [{ "transform": "ts-transform-paths" }] + }, + "exclude": ["node_modules", ".pnpm", "**/node_modules", "**/demo", "**/dist"] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0565c90..bfedd23 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,21 +8,40 @@ importers: '@commitlint/config-conventional': ^16.2.1 '@fe6/norm-git-cz-config': ^0.1.1 '@fe6/norm-prettier': ^0.1.0 + '@types/node': ^17.0.21 cz-customizable: ^6.3.0 + esno: ^0.14.1 husky: ^7.0.4 + only-allow: ^1.1.0 prettier: ^2.5.1 pretty-quick: ^3.1.3 + ts-node: ^10.7.0 + ts-transform-paths: ^2.0.3 + ttypescript: ^1.5.13 + typescript: ^4.6.2 vitepress: ^0.22.3 + zx: 4.3.0 devDependencies: '@commitlint/cli': registry.npmmirror.com/@commitlint/cli/16.2.1 '@commitlint/config-conventional': registry.npmmirror.com/@commitlint/config-conventional/16.2.1 '@fe6/norm-git-cz-config': registry.npmmirror.com/@fe6/norm-git-cz-config/0.1.1 '@fe6/norm-prettier': registry.npmmirror.com/@fe6/norm-prettier/0.1.0 + '@types/node': registry.npmmirror.com/@types/node/17.0.21 cz-customizable: registry.npmmirror.com/cz-customizable/6.3.0 + esno: registry.npmmirror.com/esno/0.14.1 husky: registry.npmmirror.com/husky/7.0.4 + only-allow: registry.npmmirror.com/only-allow/1.1.0 prettier: registry.npmmirror.com/prettier/2.5.1 pretty-quick: registry.npmmirror.com/pretty-quick/3.1.3_prettier@2.5.1 + ts-node: registry.npmmirror.com/ts-node/10.7.0_e79e62fe450383fd2d418267dc75e645 + ts-transform-paths: registry.npmmirror.com/ts-transform-paths/2.0.3 + ttypescript: registry.npmmirror.com/ttypescript/1.5.13_ts-node@10.7.0+typescript@4.6.2 + typescript: registry.npmmirror.com/typescript/4.6.2 vitepress: registry.npmmirror.com/vitepress/0.22.3 + zx: registry.npmmirror.com/zx/4.3.0 + + packages/utils: + specifiers: {} packages: @@ -33,6 +52,16 @@ packages: engines: {node: '>= 12'} dev: true + registry.nlark.com/@nodelib/fs.scandir/2.1.5: + resolution: {integrity: sha1-dhnC6yGyVIP20WdUi0z9WnSIw9U=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/@nodelib/fs.scandir/download/@nodelib/fs.scandir-2.1.5.tgz} + name: '@nodelib/fs.scandir' + version: 2.1.5 + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat/2.0.5 + run-parallel: registry.npmmirror.com/run-parallel/1.2.0 + dev: true + registry.nlark.com/concat-map/0.0.1: resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=, registry: https://registry.npm.taobao.org/, tarball: https://registry.nlark.com/concat-map/download/concat-map-0.0.1.tgz} name: concat-map @@ -498,6 +527,23 @@ packages: pretty-quick: registry.npmmirror.com/pretty-quick/3.1.3_prettier@2.5.1 dev: true + registry.npmmirror.com/@nodelib/fs.stat/2.0.5: + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz} + name: '@nodelib/fs.stat' + version: 2.0.5 + engines: {node: '>= 8'} + dev: true + + registry.npmmirror.com/@nodelib/fs.walk/1.2.8: + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz} + name: '@nodelib/fs.walk' + version: 1.2.8 + engines: {node: '>= 8'} + dependencies: + '@nodelib/fs.scandir': registry.nlark.com/@nodelib/fs.scandir/2.1.5 + fastq: registry.npmmirror.com/fastq/1.13.0 + dev: true + registry.npmmirror.com/@tsconfig/node10/1.0.8: resolution: {integrity: sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@tsconfig/node10/-/node10-1.0.8.tgz} name: '@tsconfig/node10' @@ -522,6 +568,14 @@ packages: version: 1.0.2 dev: true + registry.npmmirror.com/@types/fs-extra/9.0.13: + resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/fs-extra/-/fs-extra-9.0.13.tgz} + name: '@types/fs-extra' + version: 9.0.13 + dependencies: + '@types/node': registry.npmmirror.com/@types/node/17.0.21 + dev: true + registry.npmmirror.com/@types/minimatch/3.0.5: resolution: {integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/minimatch/-/minimatch-3.0.5.tgz} name: '@types/minimatch' @@ -534,6 +588,21 @@ packages: version: 1.2.2 dev: true + registry.npmmirror.com/@types/node-fetch/2.6.1: + resolution: {integrity: sha512-oMqjURCaxoSIsHSr1E47QHzbmzNR5rK8McHuNb11BOM9cHcIK3Avy0s/b2JlXHoQGTYS3NsvWzV1M0iK7l0wbA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node-fetch/-/node-fetch-2.6.1.tgz} + name: '@types/node-fetch' + version: 2.6.1 + dependencies: + '@types/node': registry.npmmirror.com/@types/node/17.0.21 + form-data: registry.npmmirror.com/form-data/3.0.1 + dev: true + + registry.npmmirror.com/@types/node/16.11.26: + resolution: {integrity: sha512-GZ7bu5A6+4DtG7q9GsoHXy3ALcgeIHP4NnL0Vv2wu0uUB/yQex26v0tf6/na1mm0+bS9Uw+0DFex7aaKr2qawQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-16.11.26.tgz} + name: '@types/node' + version: 16.11.26 + dev: true + registry.npmmirror.com/@types/node/17.0.21: resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/@types/node/-/node-17.0.21.tgz} name: '@types/node' @@ -727,6 +796,14 @@ packages: '@algolia/transporter': registry.npmmirror.com/@algolia/transporter/4.13.0 dev: true + registry.npmmirror.com/ansi-align/3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-align/-/ansi-align-3.0.1.tgz} + name: ansi-align + version: 3.0.1 + dependencies: + string-width: registry.npmmirror.com/string-width/4.2.3 + dev: true + registry.npmmirror.com/ansi-escapes/3.2.0: resolution: {integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz} name: ansi-escapes @@ -799,6 +876,13 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/array-union/3.0.1: + resolution: {integrity: sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/array-union/-/array-union-3.0.1.tgz} + name: array-union + version: 3.0.1 + engines: {node: '>=12'} + dev: true + registry.npmmirror.com/arrify/1.0.1: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/arrify/-/arrify-1.0.1.tgz} name: arrify @@ -813,12 +897,34 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/asynckit/0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz} + name: asynckit + version: 0.4.0 + dev: true + registry.npmmirror.com/balanced-match/1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz} name: balanced-match version: 1.0.2 dev: true + registry.npmmirror.com/boxen/4.2.0: + resolution: {integrity: sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/boxen/-/boxen-4.2.0.tgz} + name: boxen + version: 4.2.0 + engines: {node: '>=8'} + dependencies: + ansi-align: registry.npmmirror.com/ansi-align/3.0.1 + camelcase: registry.npmmirror.com/camelcase/5.3.1 + chalk: registry.npmmirror.com/chalk/3.0.0 + cli-boxes: registry.npmmirror.com/cli-boxes/2.2.1 + string-width: registry.npmmirror.com/string-width/4.2.3 + term-size: registry.npmmirror.com/term-size/2.2.1 + type-fest: registry.npmmirror.com/type-fest/0.8.1 + widest-line: registry.npmmirror.com/widest-line/3.1.0 + dev: true + registry.npmmirror.com/brace-expansion/1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/brace-expansion/-/brace-expansion-1.1.11.tgz} name: brace-expansion @@ -828,6 +934,23 @@ packages: concat-map: registry.nlark.com/concat-map/0.0.1 dev: true + registry.npmmirror.com/braces/3.0.2: + resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/braces/-/braces-3.0.2.tgz} + name: braces + version: 3.0.2 + engines: {node: '>=8'} + dependencies: + fill-range: registry.npmmirror.com/fill-range/7.0.1 + dev: true + + registry.npmmirror.com/builtins/4.0.0: + resolution: {integrity: sha512-qC0E2Dxgou1IHhvJSLwGDSTvokbRovU5zZFuDY6oY8Y2lF3nGt5Ad8YZK7GMtqzY84Wu7pXTPeHQeHcXSXsRhw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/builtins/-/builtins-4.0.0.tgz} + name: builtins + version: 4.0.0 + dependencies: + semver: registry.npmmirror.com/semver/7.3.5 + dev: true + registry.npmmirror.com/callsites/3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/callsites/-/callsites-3.1.0.tgz} name: callsites @@ -890,6 +1013,13 @@ packages: version: 0.7.0 dev: true + registry.npmmirror.com/cli-boxes/2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cli-boxes/-/cli-boxes-2.2.1.tgz} + name: cli-boxes + version: 2.2.1 + engines: {node: '>=6'} + dev: true + registry.npmmirror.com/cli-cursor/2.1.0: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/cli-cursor/-/cli-cursor-2.1.0.tgz} name: cli-cursor @@ -944,6 +1074,15 @@ packages: version: 1.1.4 dev: true + registry.npmmirror.com/combined-stream/1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz} + name: combined-stream + version: 1.0.8 + engines: {node: '>= 0.8'} + dependencies: + delayed-stream: registry.npmmirror.com/delayed-stream/1.0.0 + dev: true + registry.npmmirror.com/compare-func/2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/compare-func/-/compare-func-2.0.0.tgz} name: compare-func @@ -1082,6 +1221,13 @@ packages: engines: {node: '>=0.10.0'} dev: true + registry.npmmirror.com/delayed-stream/1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz} + name: delayed-stream + version: 1.0.0 + engines: {node: '>=0.4.0'} + dev: true + registry.npmmirror.com/diff/4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/diff/-/diff-4.0.2.tgz} name: diff @@ -1089,6 +1235,15 @@ packages: engines: {node: '>=0.3.1'} dev: true + registry.npmmirror.com/dir-glob/3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dir-glob/-/dir-glob-3.0.1.tgz} + name: dir-glob + version: 3.0.1 + engines: {node: '>=8'} + dependencies: + path-type: registry.npmmirror.com/path-type/4.0.0 + dev: true + registry.npmmirror.com/dot-prop/5.3.0: resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/dot-prop/-/dot-prop-5.3.0.tgz} name: dot-prop @@ -1098,6 +1253,12 @@ packages: is-obj: registry.npmmirror.com/is-obj/2.0.0 dev: true + registry.npmmirror.com/duplexer/0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/duplexer/-/duplexer-0.1.2.tgz} + name: duplexer + version: 0.1.2 + dev: true + registry.npmmirror.com/editor/1.0.0: resolution: {integrity: sha1-YMf4e9YrzGqJT6jM1q+3gjok90I=, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/editor/download/editor-1.0.0.tgz?cache=0&sync_timestamp=1634174913500&other_urls=https%3A%2F%2Fregistry.npmmirror.com%2Feditor%2Fdownload%2Feditor-1.0.0.tgz} name: editor @@ -1291,6 +1452,14 @@ packages: dev: true optional: true + registry.npmmirror.com/esbuild-node-loader/0.6.5: + resolution: {integrity: sha512-uPP+dllWm38cFvDysdocutN3lfe5pTIbddAHp1ENyLzpHYqE2r+3Wo+pfg9X3p8DFWwzIisft5YkeBIthIcixw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-node-loader/-/esbuild-node-loader-0.6.5.tgz} + name: esbuild-node-loader + version: 0.6.5 + dependencies: + esbuild: registry.npmmirror.com/esbuild/0.14.26 + dev: true + registry.npmmirror.com/esbuild-openbsd-64/0.14.26: resolution: {integrity: sha512-Xj7IWpsPn/hgKNzwjLpnf6wMtV0lfw5bzn7N9vmiCKx9TBA28L2hI8G15O0s9atLKny4HpmCGwZWmReNF1Ui6g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.26.tgz} name: esbuild-openbsd-64 @@ -1302,6 +1471,17 @@ packages: dev: true optional: true + registry.npmmirror.com/esbuild-register/3.3.2_esbuild@0.14.26: + resolution: {integrity: sha512-jceAtTO6zxPmCfSD5cBb3rgIK1vmuqCKYwgylHiS1BF4pq0jJiJb4K2QMuqF4BEw7XDBRatYzip0upyTzfkgsQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-register/-/esbuild-register-3.3.2.tgz} + id: registry.npmmirror.com/esbuild-register/3.3.2 + name: esbuild-register + version: 3.3.2 + peerDependencies: + esbuild: '>=0.12 <1' + dependencies: + esbuild: registry.npmmirror.com/esbuild/0.14.26 + dev: true + registry.npmmirror.com/esbuild-sunos-64/0.14.26: resolution: {integrity: sha512-5odPsuhghCUYc3c1gEtz6pGq9cuGRDq1+iNdLBjZcz6IUebd0ay/AVORWchs5WddzyJA9hguxrKsPjECxX6OzQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esbuild-sunos-64/-/esbuild-sunos-64-0.14.26.tgz} name: esbuild-sunos-64 @@ -1390,12 +1570,39 @@ packages: engines: {node: '>=0.8.0'} dev: true + registry.npmmirror.com/esno/0.14.1: + resolution: {integrity: sha512-yDFYw6dGUjCT1qKsdG7WOc/RzIh/qwxUEVZ+ohCltaxBxEFMNqeqbQL9xjRl6Yvdwrfc5OCjUA9JbFmuu/8BKg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/esno/-/esno-0.14.1.tgz} + name: esno + version: 0.14.1 + hasBin: true + dependencies: + cross-spawn: registry.npmmirror.com/cross-spawn/7.0.3 + esbuild: registry.npmmirror.com/esbuild/0.14.26 + esbuild-node-loader: registry.npmmirror.com/esbuild-node-loader/0.6.5 + esbuild-register: registry.npmmirror.com/esbuild-register/3.3.2_esbuild@0.14.26 + import-meta-resolve: registry.npmmirror.com/import-meta-resolve/1.1.1 + dev: true + registry.npmmirror.com/estree-walker/2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz} name: estree-walker version: 2.0.2 dev: true + registry.npmmirror.com/event-stream/3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/event-stream/-/event-stream-3.3.4.tgz} + name: event-stream + version: 3.3.4 + dependencies: + duplexer: registry.npmmirror.com/duplexer/0.1.2 + from: registry.npmmirror.com/from/0.1.7 + map-stream: registry.npmmirror.com/map-stream/0.1.0 + pause-stream: registry.npmmirror.com/pause-stream/0.0.11 + split: registry.npmmirror.com/split/0.3.3 + stream-combiner: registry.npmmirror.com/stream-combiner/0.0.4 + through: registry.npmmirror.com/through/2.3.8 + dev: true + registry.npmmirror.com/execa/4.1.0: resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/execa/-/execa-4.1.0.tgz} name: execa @@ -1447,12 +1654,33 @@ packages: version: 3.1.3 dev: true + registry.npmmirror.com/fast-glob/3.2.11: + resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-glob/-/fast-glob-3.2.11.tgz} + name: fast-glob + version: 3.2.11 + engines: {node: '>=8.6.0'} + dependencies: + '@nodelib/fs.stat': registry.npmmirror.com/@nodelib/fs.stat/2.0.5 + '@nodelib/fs.walk': registry.npmmirror.com/@nodelib/fs.walk/1.2.8 + glob-parent: registry.npmmirror.com/glob-parent/5.1.2 + merge2: registry.npmmirror.com/merge2/1.4.1 + micromatch: registry.npmmirror.com/micromatch/4.0.4 + dev: true + registry.npmmirror.com/fast-json-stable-stringify/2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz} name: fast-json-stable-stringify version: 2.1.0 dev: true + registry.npmmirror.com/fastq/1.13.0: + resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fastq/-/fastq-1.13.0.tgz} + name: fastq + version: 1.13.0 + dependencies: + reusify: registry.npmmirror.com/reusify/1.0.4 + dev: true + registry.npmmirror.com/figures/2.0.0: resolution: {integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/figures/-/figures-2.0.0.tgz} name: figures @@ -1462,6 +1690,15 @@ packages: escape-string-regexp: registry.npmmirror.com/escape-string-regexp/1.0.5 dev: true + registry.npmmirror.com/fill-range/7.0.1: + resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fill-range/-/fill-range-7.0.1.tgz} + name: fill-range + version: 7.0.1 + engines: {node: '>=8'} + dependencies: + to-regex-range: registry.npmmirror.com/to-regex-range/5.0.1 + dev: true + registry.npmmirror.com/find-config/1.0.0: resolution: {integrity: sha512-Z+suHH+7LSE40WfUeZPIxSxypCWvrzdVc60xAjUShZeT5eMWM0/FQUduq3HjluyfAHWvC/aOBkT1pTZktyF/jg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/find-config/-/find-config-1.0.0.tgz} name: find-config @@ -1491,6 +1728,23 @@ packages: path-exists: registry.npmmirror.com/path-exists/4.0.0 dev: true + registry.npmmirror.com/form-data/3.0.1: + resolution: {integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/form-data/-/form-data-3.0.1.tgz} + name: form-data + version: 3.0.1 + engines: {node: '>= 6'} + dependencies: + asynckit: registry.npmmirror.com/asynckit/0.4.0 + combined-stream: registry.npmmirror.com/combined-stream/1.0.8 + mime-types: registry.npmmirror.com/mime-types/2.1.35 + dev: true + + registry.npmmirror.com/from/0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/from/-/from-0.1.7.tgz} + name: from + version: 0.1.7 + dev: true + registry.npmmirror.com/fs-extra/10.0.1: resolution: {integrity: sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/fs-extra/-/fs-extra-10.0.1.tgz} name: fs-extra @@ -1561,6 +1815,15 @@ packages: through2: registry.npmmirror.com/through2/4.0.2 dev: true + registry.npmmirror.com/glob-parent/5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz} + name: glob-parent + version: 5.1.2 + engines: {node: '>= 6'} + dependencies: + is-glob: registry.npmmirror.com/is-glob/4.0.3 + dev: true + registry.npmmirror.com/glob/7.2.0: resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/glob/-/glob-7.2.0.tgz} name: glob @@ -1583,6 +1846,20 @@ packages: ini: registry.npmmirror.com/ini/1.3.8 dev: true + registry.npmmirror.com/globby/12.2.0: + resolution: {integrity: sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/globby/-/globby-12.2.0.tgz} + name: globby + version: 12.2.0 + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + dependencies: + array-union: registry.npmmirror.com/array-union/3.0.1 + dir-glob: registry.npmmirror.com/dir-glob/3.0.1 + fast-glob: registry.npmmirror.com/fast-glob/3.2.11 + ignore: registry.npmmirror.com/ignore/5.2.0 + merge2: registry.npmmirror.com/merge2/1.4.1 + slash: registry.npmmirror.com/slash/4.0.0 + dev: true + registry.npmmirror.com/graceful-fs/4.2.9: resolution: {integrity: sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.9.tgz} name: graceful-fs @@ -1682,6 +1959,14 @@ packages: resolve-from: registry.npmmirror.com/resolve-from/4.0.0 dev: true + registry.npmmirror.com/import-meta-resolve/1.1.1: + resolution: {integrity: sha512-JiTuIvVyPaUg11eTrNDx5bgQ/yMKMZffc7YSjvQeSMXy58DO2SQ8BtAf3xteZvmzvjYh14wnqNjL8XVeDy2o9A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/import-meta-resolve/-/import-meta-resolve-1.1.1.tgz} + name: import-meta-resolve + version: 1.1.1 + dependencies: + builtins: registry.npmmirror.com/builtins/4.0.0 + dev: true + registry.npmmirror.com/indent-string/4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/indent-string/-/indent-string-4.0.0.tgz} name: indent-string @@ -1745,6 +2030,13 @@ packages: has: registry.npmmirror.com/has/1.0.3 dev: true + registry.npmmirror.com/is-extglob/2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz} + name: is-extglob + version: 2.1.1 + engines: {node: '>=0.10.0'} + dev: true + registry.npmmirror.com/is-fullwidth-code-point/2.0.0: resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz} name: is-fullwidth-code-point @@ -1759,6 +2051,22 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/is-glob/4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz} + name: is-glob + version: 4.0.3 + engines: {node: '>=0.10.0'} + dependencies: + is-extglob: registry.npmmirror.com/is-extglob/2.1.1 + dev: true + + registry.npmmirror.com/is-number/7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz} + name: is-number + version: 7.0.0 + engines: {node: '>=0.12.0'} + dev: true + registry.npmmirror.com/is-obj/2.0.0: resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/is-obj/-/is-obj-2.0.0.tgz} name: is-obj @@ -1904,6 +2212,12 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/map-stream/0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/map-stream/-/map-stream-0.1.0.tgz} + name: map-stream + version: 0.1.0 + dev: true + registry.npmmirror.com/meow/8.1.2: resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/meow/-/meow-8.1.2.tgz} name: meow @@ -1929,6 +2243,39 @@ packages: version: 2.0.0 dev: true + registry.npmmirror.com/merge2/1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz} + name: merge2 + version: 1.4.1 + engines: {node: '>= 8'} + dev: true + + registry.npmmirror.com/micromatch/4.0.4: + resolution: {integrity: sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/micromatch/-/micromatch-4.0.4.tgz} + name: micromatch + version: 4.0.4 + engines: {node: '>=8.6'} + dependencies: + braces: registry.npmmirror.com/braces/3.0.2 + picomatch: registry.npmmirror.com/picomatch/2.3.1 + dev: true + + registry.npmmirror.com/mime-db/1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz} + name: mime-db + version: 1.52.0 + engines: {node: '>= 0.6'} + dev: true + + registry.npmmirror.com/mime-types/2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz} + name: mime-types + version: 2.1.35 + engines: {node: '>= 0.6'} + dependencies: + mime-db: registry.npmmirror.com/mime-db/1.52.0 + dev: true + registry.npmmirror.com/mimic-fn/1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/mimic-fn/-/mimic-fn-1.2.0.tgz} name: mimic-fn @@ -2012,6 +2359,20 @@ packages: hasBin: true dev: true + registry.npmmirror.com/node-fetch/2.6.7: + resolution: {integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/node-fetch/-/node-fetch-2.6.7.tgz} + name: node-fetch + version: 2.6.7 + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + dependencies: + whatwg-url: registry.npmmirror.com/whatwg-url/5.0.0 + dev: true + registry.npmmirror.com/normalize-package-data/2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz} name: normalize-package-data @@ -2070,6 +2431,16 @@ packages: mimic-fn: registry.npmmirror.com/mimic-fn/2.1.0 dev: true + registry.npmmirror.com/only-allow/1.1.0: + resolution: {integrity: sha512-HYiuMpRuy0d0DjoQZwhwO1Ueal0NXJ2I4mNxLv3aGw/1naRcAAzVC953WNpcbjlo+ak3WsoKDjHvoMd2cSZLpw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/only-allow/-/only-allow-1.1.0.tgz} + name: only-allow + version: 1.1.0 + hasBin: true + dependencies: + boxen: registry.npmmirror.com/boxen/4.2.0 + which-pm-runs: registry.npmmirror.com/which-pm-runs/1.1.0 + dev: true + registry.npmmirror.com/os-homedir/1.0.2: resolution: {integrity: sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/os-homedir/-/os-homedir-1.0.2.tgz} name: os-homedir @@ -2182,12 +2553,27 @@ packages: engines: {node: '>=8'} dev: true + registry.npmmirror.com/pause-stream/0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pause-stream/-/pause-stream-0.0.11.tgz} + name: pause-stream + version: 0.0.11 + dependencies: + through: registry.npmmirror.com/through/2.3.8 + dev: true + registry.npmmirror.com/picocolors/1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz} name: picocolors version: 1.0.0 dev: true + registry.npmmirror.com/picomatch/2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz} + name: picomatch + version: 2.3.1 + engines: {node: '>=8.6'} + dev: true + registry.npmmirror.com/postcss/8.4.8: resolution: {integrity: sha512-2tXEqGxrjvAO6U+CJzDL2Fk2kPHTv1jQsYkSoMeOis2SsYaXRO2COxTdQp99cYvif9JTXaAk9lYGc3VhJt7JPQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/postcss/-/postcss-8.4.8.tgz} name: postcss @@ -2239,6 +2625,16 @@ packages: engines: {node: '>=6'} dev: true + registry.npmmirror.com/ps-tree/1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ps-tree/-/ps-tree-1.2.0.tgz} + name: ps-tree + version: 1.2.0 + engines: {node: '>= 0.10'} + hasBin: true + dependencies: + event-stream: registry.npmmirror.com/event-stream/3.3.4 + dev: true + registry.npmmirror.com/pump/3.0.0: resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/pump/-/pump-3.0.0.tgz} name: pump @@ -2262,6 +2658,12 @@ packages: engines: {node: '>=0.6.0', teleport: '>=0.2.0'} dev: true + registry.npmmirror.com/queue-microtask/1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz} + name: queue-microtask + version: 1.2.3 + dev: true + registry.npmmirror.com/quick-lru/4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/quick-lru/-/quick-lru-4.0.1.tgz} name: quick-lru @@ -2364,6 +2766,13 @@ packages: signal-exit: registry.npmmirror.com/signal-exit/3.0.7 dev: true + registry.npmmirror.com/reusify/1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/reusify/-/reusify-1.0.4.tgz} + name: reusify + version: 1.0.4 + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + dev: true + registry.npmmirror.com/rimraf/2.6.3: resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rimraf/-/rimraf-2.6.3.tgz} name: rimraf @@ -2390,6 +2799,14 @@ packages: engines: {node: '>=0.12.0'} dev: true + registry.npmmirror.com/run-parallel/1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz} + name: run-parallel + version: 1.2.0 + dependencies: + queue-microtask: registry.npmmirror.com/queue-microtask/1.2.3 + dev: true + registry.npmmirror.com/rxjs/6.6.7: resolution: {integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/rxjs/-/rxjs-6.6.7.tgz} name: rxjs @@ -2450,6 +2867,13 @@ packages: version: 3.0.7 dev: true + registry.npmmirror.com/slash/4.0.0: + resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/slash/-/slash-4.0.0.tgz} + name: slash + version: 4.0.0 + engines: {node: '>=12'} + dev: true + registry.npmmirror.com/source-map-js/1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/source-map-js/-/source-map-js-1.0.2.tgz} name: source-map-js @@ -2500,6 +2924,14 @@ packages: version: 3.0.11 dev: true + registry.npmmirror.com/split/0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/split/-/split-0.3.3.tgz} + name: split + version: 0.3.3 + dependencies: + through: registry.npmmirror.com/through/2.3.8 + dev: true + registry.npmmirror.com/split2/3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/split2/-/split2-3.2.2.tgz} name: split2 @@ -2508,6 +2940,14 @@ packages: readable-stream: registry.npmmirror.com/readable-stream/3.6.0 dev: true + registry.npmmirror.com/stream-combiner/0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/stream-combiner/-/stream-combiner-0.0.4.tgz} + name: stream-combiner + version: 0.0.4 + dependencies: + duplexer: registry.npmmirror.com/duplexer/0.1.2 + dev: true + registry.npmmirror.com/string-width/2.1.1: resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/string-width/-/string-width-2.1.1.tgz} name: string-width @@ -2615,6 +3055,13 @@ packages: rimraf: registry.npmmirror.com/rimraf/2.6.3 dev: true + registry.npmmirror.com/term-size/2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/term-size/-/term-size-2.2.1.tgz} + name: term-size + version: 2.2.1 + engines: {node: '>=8'} + dev: true + registry.npmmirror.com/text-extensions/1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/text-extensions/-/text-extensions-1.9.0.tgz} name: text-extensions @@ -2645,6 +3092,21 @@ packages: os-tmpdir: registry.npmmirror.com/os-tmpdir/1.0.2 dev: true + registry.npmmirror.com/to-regex-range/5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz} + name: to-regex-range + version: 5.0.1 + engines: {node: '>=8.0'} + dependencies: + is-number: registry.npmmirror.com/is-number/7.0.0 + dev: true + + registry.npmmirror.com/tr46/0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tr46/-/tr46-0.0.3.tgz} + name: tr46 + version: 0.0.3 + dev: true + registry.npmmirror.com/trim-newlines/3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/trim-newlines/-/trim-newlines-3.0.1.tgz} name: trim-newlines @@ -2686,12 +3148,33 @@ packages: yn: registry.nlark.com/yn/3.1.1 dev: true + registry.npmmirror.com/ts-transform-paths/2.0.3: + resolution: {integrity: sha512-eMUcIe/CCLUl90j9xqyj0RXC0t7h2E/ETbGBG3E8xFLyIMD9kTixUfZM78K1sHu0OBTFZTo6J7aUOafB8Mx+Dg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ts-transform-paths/-/ts-transform-paths-2.0.3.tgz} + name: ts-transform-paths + version: 2.0.3 + dev: true + registry.npmmirror.com/tslib/1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/tslib/-/tslib-1.14.1.tgz} name: tslib version: 1.14.1 dev: true + registry.npmmirror.com/ttypescript/1.5.13_ts-node@10.7.0+typescript@4.6.2: + resolution: {integrity: sha512-KT/RBfGGlVJFqEI8cVvI3nMsmYcFvPSZh8bU0qX+pAwbi7/ABmYkzn7l/K8skw0xmYjVCoyaV6WLsBQxdadybQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/ttypescript/-/ttypescript-1.5.13.tgz} + id: registry.npmmirror.com/ttypescript/1.5.13 + name: ttypescript + version: 1.5.13 + hasBin: true + peerDependencies: + ts-node: '>=8.0.2' + typescript: '>=3.2.2' + dependencies: + resolve: registry.npmmirror.com/resolve/1.22.0 + ts-node: registry.npmmirror.com/ts-node/10.7.0_e79e62fe450383fd2d418267dc75e645 + typescript: registry.npmmirror.com/typescript/4.6.2 + dev: true + registry.npmmirror.com/type-fest/0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/type-fest/-/type-fest-0.18.1.tgz} name: type-fest @@ -2827,6 +3310,28 @@ packages: '@vue/shared': registry.npmmirror.com/@vue/shared/3.2.31 dev: true + registry.npmmirror.com/webidl-conversions/3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz} + name: webidl-conversions + version: 3.0.1 + dev: true + + registry.npmmirror.com/whatwg-url/5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/whatwg-url/-/whatwg-url-5.0.0.tgz} + name: whatwg-url + version: 5.0.0 + dependencies: + tr46: registry.npmmirror.com/tr46/0.0.3 + webidl-conversions: registry.npmmirror.com/webidl-conversions/3.0.1 + dev: true + + registry.npmmirror.com/which-pm-runs/1.1.0: + resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which-pm-runs/-/which-pm-runs-1.1.0.tgz} + name: which-pm-runs + version: 1.1.0 + engines: {node: '>=4'} + dev: true + registry.npmmirror.com/which/2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/which/-/which-2.0.2.tgz} name: which @@ -2837,6 +3342,15 @@ packages: isexe: registry.npmmirror.com/isexe/2.0.0 dev: true + registry.npmmirror.com/widest-line/3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/widest-line/-/widest-line-3.1.0.tgz} + name: widest-line + version: 3.1.0 + engines: {node: '>=8'} + dependencies: + string-width: registry.npmmirror.com/string-width/4.2.3 + dev: true + registry.npmmirror.com/word-wrap/1.2.3: resolution: {integrity: sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/word-wrap/-/word-wrap-1.2.3.tgz} name: word-wrap @@ -2916,3 +3430,25 @@ packages: version: 0.1.0 engines: {node: '>=10'} dev: true + + registry.npmmirror.com/zx/4.3.0: + resolution: {integrity: sha512-KuEjpu5QFIMx0wWfzknDRhY98s7a3tWNRmYt19XNmB7AfOmz5zISA4+3Q8vlJc2qguxMn89uSxhPDCldPa3YLA==, registry: https://registry.npm.taobao.org/, tarball: https://registry.npmmirror.com/zx/-/zx-4.3.0.tgz} + name: zx + version: 4.3.0 + engines: {node: '>= 14.13.1'} + hasBin: true + dependencies: + '@types/fs-extra': registry.npmmirror.com/@types/fs-extra/9.0.13 + '@types/minimist': registry.npmmirror.com/@types/minimist/1.2.2 + '@types/node': registry.npmmirror.com/@types/node/16.11.26 + '@types/node-fetch': registry.npmmirror.com/@types/node-fetch/2.6.1 + chalk: registry.npmmirror.com/chalk/4.1.2 + fs-extra: registry.npmmirror.com/fs-extra/10.0.1 + globby: registry.npmmirror.com/globby/12.2.0 + minimist: registry.npmmirror.com/minimist/1.2.5 + node-fetch: registry.npmmirror.com/node-fetch/2.6.7 + ps-tree: registry.npmmirror.com/ps-tree/1.2.0 + which: registry.npmmirror.com/which/2.0.2 + transitivePeerDependencies: + - encoding + dev: true diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fe6f65f..f4c875e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,3 +1,3 @@ packages: - 'packages/*' - - 'projects/**' + - 'demo/**' diff --git a/scripts/bootstrap.ts b/scripts/bootstrap.ts new file mode 100644 index 0000000..e364940 --- /dev/null +++ b/scripts/bootstrap.ts @@ -0,0 +1,149 @@ +/** @format */ + +// Fork from https://github.com/umijs/umi-next/blob/master/scripts/utils.ts +// NOTE 所有功能($、cd、fetch等)都可以直接使用,无需任何导入。 +// NOTE 或者显式导入全局变量(以便在VS代码中更好地自动完成)。 +import 'zx/globals'; +import { setExcludeFolder } from './utils'; + +(async () => { + function getName(pkgName: string): string { + return `@fe6/${pkgName}`; + } + + async function renderPkg(opts: any): Promise { + const pkgDir = path.join(opts.pkgDir, opts.pkg); + if (!opts.force && fs.existsSync(path.join(pkgDir, 'package.json'))) { + console.log(); + console.log(chalk.yellow(`${opts.pkg} exists`)); + console.log(); + } else { + if (!fs.existsSync(pkgDir)) { + await $`mkdir ${pkgDir}`; + } + + const name = getName(opts.pkg); + + // package.json + const pkgPkgJSONPath = path.join(pkgDir, 'package.json'); + const hasPkgJSON = fs.existsSync(pkgPkgJSONPath); + const pkgPkgJSON = hasPkgJSON ? require(pkgPkgJSONPath) : {}; + fs.writeJSONSync( + pkgPkgJSONPath, + Object.assign( + { + name, + version: '0.0.0', + description: name, + main: 'dist/index.js', + types: 'dist/index.d.ts', + files: ['dist'], + scripts: { + build: 'pnpm tsc', + 'build:deps': 'pnpm esno ../../scripts/bundleDeps.ts', + start: 'pnpm build -- --watch', + }, + repository: { + type: 'git', + url: 'git+https://github.com/fe6/biu.git', + directory: `packages/${opts.pkg}`, + }, + authors: ['tainyi <649076408@qq.com> (https://github.com/iq9891)'], + license: 'MIT', + bugs: 'https://github.com/fe6/biu/issues', + publishConfig: { + access: 'public', + }, + }, + { + ...(hasPkgJSON + ? { + authors: pkgPkgJSON.authors, + bin: pkgPkgJSON.bin, + files: pkgPkgJSON.files, + scripts: pkgPkgJSON.scripts, + description: pkgPkgJSON.description, + dependencies: pkgPkgJSON.dependencies, + devDependencies: pkgPkgJSON.devDependencies, + compiledConfig: pkgPkgJSON.compiledConfig, + } + : {}), + }, + ), + { spaces: ' ' }, + ); + + // README.md + await fs.writeFile( + path.join(pkgDir, 'README.md'), + `# ${name}\n`, + 'utf-8', + ); + + // tsconfig.json + await fs.writeFile( + path.join(pkgDir, 'tsconfig.json'), + `{ + "extends": "../tsconfig.base.json", + "compilerOptions": { + "baseUrl": ".", + "outDir": "dist" + }, + "include": ["src"] +}\n`, + 'utf-8', + ); + + // src/index.ts + const srcDir = path.join(pkgDir, 'src'); + if (!fs.existsSync(srcDir)) { + await $`mkdir ${srcDir}`; + } + if (!fs.existsSync(path.join(pkgDir, 'src', 'index.ts'))) { + await fs.writeFile( + path.join(pkgDir, 'src', 'index.ts'), + ` +export default () => { + return '${name}'; +};\n`.trimStart(), + 'utf-8', + ); + } + + // set excludeFolder for webstorm + setExcludeFolder({ pkg: opts.pkg, cwd: root }); + console.log(); + console.log(chalk.green(`${opts.pkg} bootstrapped`)); + console.log(); + } + } + + const root = path.join(__dirname, '..'); + const pkgDir = path.join(root, 'packages'); + const pkgs = await fs.readdir(pkgDir); + + const { _ } = argv; + if (_.length > 0) { + const [pkgName] = _; + if (fs.existsSync(path.join(pkgDir, pkgName))) { + console.log(chalk.yellow(`${pkgName} exists`)); + console.log(); + } else { + await renderPkg({ + pkgDir, + pkg: pkgName, + force: argv.force, + }); + } + } else { + for (const pkg of pkgs) { + if (pkg.charAt(0) === '.') continue; + if (!(await fs.stat(path.join(pkgDir, pkg))).isDirectory()) continue; + await renderPkg({ + pkgDir, + pkg, + force: argv.force, + }); + } + } +})(); diff --git a/scripts/utils.ts b/scripts/utils.ts new file mode 100644 index 0000000..addfe43 --- /dev/null +++ b/scripts/utils.ts @@ -0,0 +1,65 @@ +/** @format */ + +// Fork from https://github.com/umijs/umi-next/blob/master/scripts/utils.ts +// import * as logger from '@umijs/utils/src/logger'; +import { existsSync, readdirSync, readFileSync, writeFileSync } from 'fs'; +import { join } from 'path'; + +export function getPkgs(opts?: { base?: string }): string[] { + const base = opts?.base || join(__dirname, '../packages'); + return readdirSync(base).filter((dir) => { + return !dir.startsWith('.') && existsSync(join(base, dir, 'package.json')); + }); +} + +export function eachPkg( + pkgs: string[], + fn: (opts: { + name: string; + dir: string; + pkgPath: string; + pkgJson: Record; + }) => void, + opts?: { base?: string }, +) { + const base = opts?.base || join(__dirname, '../packages'); + pkgs.forEach((pkg) => { + fn({ + name: pkg, + dir: join(base, pkg), + pkgPath: join(base, pkg, 'package.json'), + pkgJson: require(join(base, pkg, 'package.json')), + }); + }); +} + +export function assert(v: unknown, message: string) { + if (!v) { + // logger.error(message); + process.exit(1); + } +} + +export function setExcludeFolder(opts: { + cwd: string; + pkg: string; + dirName?: string; + folders?: string[]; +}) { + const dirName = opts.dirName || 'packages'; + const folders = opts.folders || ['dist', 'compiled']; + if (!existsSync(join(opts.cwd, '.idea'))) return; + const configPath = join(opts.cwd, '.idea', 'umi-next.iml'); + let content = readFileSync(configPath, 'utf-8'); + for (const folder of folders) { + const excludeContent = ``; + const replaceMatcher = ``; + if (!content.includes(excludeContent)) { + content = content.replace( + replaceMatcher, + `${replaceMatcher}\n ${excludeContent}`, + ); + } + } + writeFileSync(configPath, content, 'utf-8'); +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..94bebe2 --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "module": "commonjs", + "moduleResolution": "node", + "noUnusedLocals": true, + "noUnusedParameters": true, + "strict": true, + "skipLibCheck": true, + "target": "es2015", + "jsx": "preserve" + }, + "exclude": [ + "**/node_modules", + "**/examples", + "**/dist", + "**/fixtures", + "**/*.test.ts" + ] +} diff --git a/tsconfig.json b/tsconfig.json index cefd32c..8f2fac4 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,24 +1,6 @@ { + "extends": "./tsconfig.base.json", "compilerOptions": { - "target": "es5", - "module": "commonjs", - "strict": true, - "rootDir": ".", - "jsx": "preserve", - "preserveConstEnums": true, - "allowJs": true, - "noUnusedLocals": true, - "noUnusedParameters": true, - "strictNullChecks": true, - "moduleResolution": "node", - "allowSyntheticDefaultImports": true, - "esModuleInterop": true, - "preserveSymlinks": true, - "resolveJsonModule": true, - "removeComments": true, - "experimentalDecorators": true, - "noImplicitAny": false, - "typeRoots": [] - }, - "exclude": ["node_modules", "dist", "**/*.js"] + "baseUrl": "." + } }