diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000000..85abd42de5 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,12 @@ +# Changesets + +Changesets records user-facing changes that should be included in the next +`@doocs/md-cli` release. + +Run `pnpm changeset`, select `@doocs/md-cli`, choose the semantic version bump, +and write a concise release-note summary. Commit the generated Markdown file +with the change. + +After changes land on `main`, the release workflow keeps a release pull request +up to date. Merging that pull request publishes the package to npm and creates +the corresponding Git tag and GitHub release. diff --git a/.changeset/clean-otters-release.md b/.changeset/clean-otters-release.md new file mode 100644 index 0000000000..7e7000abe4 --- /dev/null +++ b/.changeset/clean-otters-release.md @@ -0,0 +1,5 @@ +--- +"@doocs/md-cli": patch +--- + +Automate CLI versioning, changelog generation, and npm publishing with Changesets. diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000000..4b015b902e --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,16 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@4.0.0/schema.json", + "changelog": [ + "@changesets/changelog-github", + { + "repo": "doocs/md" + } + ], + "commit": false, + "fixed": [], + "linked": [], + "access": "public", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": ["md", "doocs-md"] +} diff --git a/.github/workflows/release-cli.yml b/.github/workflows/release-cli.yml index 67ce41c84d..24b1e6d1b9 100644 --- a/.github/workflows/release-cli.yml +++ b/.github/workflows/release-cli.yml @@ -1,18 +1,25 @@ -name: Create CLI Release +name: Release CLI on: push: - tags: - - 'cli-v*' + branches: [main] + workflow_dispatch: -permissions: - id-token: write # Required for OIDC trusted publishing - contents: read +permissions: {} + +concurrency: + group: release-cli-${{ github.ref }} + cancel-in-progress: false jobs: - build: + select-mode: runs-on: ubuntu-latest if: github.repository == 'doocs/md' + permissions: + contents: read + outputs: + mode: ${{ steps.select-mode.outputs.mode }} + publish-plan-artifact-id: ${{ steps.select-mode.outputs.publish-plan-artifact-id }} steps: - name: Checkout uses: actions/checkout@v7 @@ -23,17 +30,70 @@ jobs: uses: pnpm/setup@v3 with: version: 12.14.0 + runtime: node@22 cache: true install: false - - name: Set up Node - uses: actions/setup-node@v7 + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Select release mode + id: select-mode + uses: changesets/action/select-mode@v2 + + version: + needs: select-mode + if: needs.select-mode.outputs.mode == 'version' + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout + uses: actions/checkout@v7 with: - node-version: 22 - registry-url: https://registry.npmjs.org/ + persist-credentials: false - - name: Update npm - run: npm install -g npm@latest + - name: Set up pnpm + uses: pnpm/setup@v3 + with: + version: 12.14.0 + runtime: node@22 + cache: true + install: false + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Create or update release pull request + uses: changesets/action/version@v2 + with: + github-token: ${{ secrets.DOOCS_BOT_ACTION_TOKEN }} + script: pnpm changeset:version + commit-message: 'chore: release CLI' + pr-title: 'chore: release CLI' + + pack: + needs: select-mode + if: needs.select-mode.outputs.mode == 'publish' + runs-on: ubuntu-latest + permissions: + contents: read + outputs: + pack-dir-artifact-id: ${{ steps.pack.outputs.pack-dir-artifact-id }} + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + persist-credentials: false + + - name: Set up pnpm + uses: pnpm/setup@v3 + with: + version: 12.14.0 + runtime: node@22 + cache: true + install: false - name: Install dependencies run: pnpm install --frozen-lockfile @@ -41,5 +101,41 @@ jobs: - name: Build CLI run: pnpm run build:cli + - name: Pack CLI + id: pack + uses: changesets/action/pack@v2 + with: + publish-plan-artifact-id: ${{ needs.select-mode.outputs.publish-plan-artifact-id }} + + publish: + needs: pack + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v7 + with: + persist-credentials: false + + - name: Set up pnpm + uses: pnpm/setup@v3 + with: + version: 12.14.0 + runtime: node@22 + cache: true + install: false + + - name: Update npm + run: npm install -g npm@latest + + - name: Install dependencies + run: pnpm install --frozen-lockfile + - name: Publish CLI - run: cd packages/md-cli && npm publish --registry=https://registry.npmjs.org/ + uses: changesets/action/publish@v2 + with: + pack-dir-artifact-id: ${{ needs.pack.outputs.pack-dir-artifact-id }} + env: + NPM_CONFIG_PROVENANCE: true diff --git a/AGENTS.md b/AGENTS.md index 2d4949ad70..a9d61a4f4e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,8 +36,9 @@ pnpm install # 安装所有依赖 pnpm start # 等同于 `pnpm web dev` pnpm run lint # ESLint --fix 全项目检查 pnpm run type-check # vue-tsc 类型检查 -pnpm run build:cli # 构建 web + 复制到 md-cli + npm pack -pnpm run release:cli # 通过 scripts/release.js 发布 CLI +pnpm run build:cli # 构建 web + 复制产物到 md-cli +pnpm run pack:cli # 构建并生成 CLI npm tarball +pnpm changeset # 记录下一次 CLI 发布的版本级别与更新说明 pnpm utools:package # 打包 uTools 插件 pnpm run inspector # node-modules-inspector 查看依赖树 ``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ef629c80eb..8ffa730972 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -76,7 +76,8 @@ pnpm web dev ``` 3. 编码 & 编写/更新测试。 -4. 运行检查: +4. 如果变更需要随 npm CLI 发布,运行 `pnpm changeset`,选择 `@doocs/md-cli`、版本变更级别,并填写面向用户的更新说明。将生成的 `.changeset/*.md` 文件一并提交。 +5. 运行检查: ```bash pnpm run lint # ESLint + Prettier @@ -84,7 +85,7 @@ pnpm web dev pnpm web build # 产物验证 ``` -5. 提交并推送: +6. 提交并推送: ```bash git add . @@ -92,7 +93,7 @@ pnpm web dev git push origin feat/awesome-feature ``` -6. 在 GitHub 页面发起 **Pull Request**,并按 [`.github/pull_request_template.md`](./.github/pull_request_template.md) 填写说明。 +7. 在 GitHub 页面发起 **Pull Request**,并按 [`.github/pull_request_template.md`](./.github/pull_request_template.md) 填写说明。 > [!TIP] > 开发时可在 `apps/web` 目录下新建 `.env.local` 文件,配置 `VITE_LAUNCH_EDITOR` 为 `code` (默认值)或其他 [支持的编辑器](https://github.com/yyx990803/launch-editor?tab=readme-ov-file#supported-editors),方便调试。 diff --git a/package.json b/package.json index b0f2e849bf..5d8ab99b84 100644 --- a/package.json +++ b/package.json @@ -24,8 +24,11 @@ "mcp": "pnpm --filter @md/mcp-server", "api": "pnpm --filter @md/api", "cli": "pnpm --filter @doocs/md-cli", - "build:cli": "pnpm web build && npx shx rm -rf packages/md-cli/dist && npx shx rm -rf dist/**/*.map && npx shx cp -r apps/web/dist packages/md-cli/ && cd packages/md-cli && npm pack", - "release:cli": "node ./scripts/release.js", + "build:cli": "pnpm web build && shx rm -rf packages/md-cli/dist && shx cp -r apps/web/dist packages/md-cli/", + "pack:cli": "pnpm run build:cli && pnpm --dir packages/md-cli pack", + "changeset": "changeset", + "changeset:version": "changeset version", + "release:cli": "pnpm run build:cli && changeset publish", "lint": "eslint . --fix", "type-check": "pnpm type-check:web && pnpm type-check:packages", "type-check:web": "pnpm --filter @md/web run type-check", @@ -37,6 +40,8 @@ }, "devDependencies": { "@antfu/eslint-config": "9.5.1", + "@changesets/changelog-github": "1.0.1", + "@changesets/cli": "3.0.2", "@types/node": "^26.6.5", "archiver": "^8.0.0", "eslint": "^10.13.0", diff --git a/packages/md-cli/package.json b/packages/md-cli/package.json index 399179f95e..cb9027a3f8 100644 --- a/packages/md-cli/package.json +++ b/packages/md-cli/package.json @@ -28,6 +28,10 @@ "bugs": { "url": "https://github.com/doocs/md/issues" }, + "publishConfig": { + "access": "public", + "registry": "https://registry.npmjs.org/" + }, "dependencies": { "express": "^5.3.0", "form-data": "4.0.6", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 033fef0a2f..5c1bf12165 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -263,6 +263,12 @@ importers: '@antfu/eslint-config': specifier: 9.5.1 version: 9.5.1(@typescript-eslint/typescript-estree@8.72.0(supports-color@10.2.2)(typescript@6.0.3))(@typescript-eslint/utils@8.72.0(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3))(@vue/compiler-sfc@3.5.44)(eslint-plugin-format@2.0.1(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2)))(eslint@10.13.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2)(typescript@6.0.3)(vitest@5.0.5(@types/node@26.6.5)(jsdom@30.1.3)(vite@8.3.4(@types/node@26.6.5)(esbuild@0.28.2)(jiti@2.7.0)(less@4.9.1(supports-color@10.2.2))(terser@5.51.2)(tsx@4.23.15)(yaml@2.9.1))) + '@changesets/changelog-github': + specifier: 1.0.1 + version: 1.0.1 + '@changesets/cli': + specifier: 3.0.2 + version: 3.0.2 '@types/node': specifier: ^26.6.5 version: 26.6.5 @@ -1118,6 +1124,75 @@ packages: '@cacheable/utils@2.5.0': resolution: {integrity: sha512-buipgOVDkkPXNR5+xBpDw7Zk2n1EvU7qBJCNUcL7rhQ//kfpOXPAvQ511Os0vpLYJ1pZnvudNytkQt2hst3wqA==} + '@changesets/apply-release-plan@8.1.1': + resolution: {integrity: sha512-nk2Hbq3M9NeHMdaIRBDvawKrQJzXB9sGyBUE5yWnIKtvdcNCPj75zBekJYr0gTT2ecJH3eFeTrc8eisPImcv0Q==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/assemble-release-plan@7.0.0': + resolution: {integrity: sha512-oEW8BxdA604kGGtDSCiHr5w9Tv4UWe9I2k61IBNZzCOE1kbYaJj4v+lFQNgcEZFkUc2pV/+hASErGDvpJOZCTg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/changelog-git@1.0.0': + resolution: {integrity: sha512-3Dst2Ime2Op5nd4XmWJLPIgp11ZFqJqSkVug9izK6TDcIV4YlhPS4ECbEVR+eGI0bk0r1ItogD4j2Oli87bJrA==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/changelog-github@1.0.1': + resolution: {integrity: sha512-QUcrV7878yHlWPXXPA6gqSxNKwtVHCd1K22L7ZAoJw2yGy8K4QvjwOStD75+1Q9KD9ZSUgGS94HuYdd7HOVtpA==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/cli@3.0.2': + resolution: {integrity: sha512-t/omGJj/I+Jv0kmJAkj5cstYEdUQiJnpip2F+2m3F4lQ3kAZ3o8Exep4/Fm1qq4rvw6ovlhJvZNrKdwLJ4lkuQ==} + engines: {node: ^22.11 || ^24 || >=26, npm: '>=10.9.0', pnpm: '>=10.0.0', yarn: '>=4.5.2'} + hasBin: true + + '@changesets/config@4.0.1': + resolution: {integrity: sha512-PxpxSQLQSLDjceAgRq+4FWlU+HflDIw03mmPVipxoQx9xrXFUjmqTy3SE+n/2t+DqPdpPiLWVr5NRiLZvjyLwg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/errors@1.0.0': + resolution: {integrity: sha512-ElN/mEzn6zmETgjwf5MclCMa9ef59sAR0lfO8VSYIsiRvbC2FbLB/92EoYw10Sl0kGixxHFiJZUSv7dA+YpR8g==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/format@0.1.3': + resolution: {integrity: sha512-zTZrJbfY81+/MsXsey6i3jQjpApz4PqRQ+nouHGDJhCa5sKCExwR9mZFQ/67lMsqZDNy2G2v3wTbzOmZ56EtaQ==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/get-dependents-graph@3.0.0': + resolution: {integrity: sha512-ji/t5wFA1zREKXRUePE6Qi+Qu2UgxCeSSGQrphezwvQZrp49B7sJ+8+wvM0tA7zPeSxYKCojDy3WWgrl+s+awg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/get-github-info@1.0.1': + resolution: {integrity: sha512-ifLQCky/ZtDgZ4xCiUMjnLZSJ8xk52iIzMJbBBPlZWjr2CiTNTaTDddIVWKicrUAdWuLWL7PUw2fNa1yPwLpIg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/git@4.0.1': + resolution: {integrity: sha512-6vWpIAC4LkpmlqaIu37ViT5enyd9+uBwAiGqCGhASvkSHBgx4PrtTGXWTMFYpDmZbjgyonyVgMciPrW4MqtJsA==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/parse@1.0.0': + resolution: {integrity: sha512-P0iaMb9p9CRYZiTgAllEIF9AUMQHIy1G72tKlcIqJp61icZSsKQNiOPdxAMZG8m/DvZwt/oz5xEbTpike//dWg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/pre@3.0.0': + resolution: {integrity: sha512-Zm/6YliV/a2oeWTqHJf6KxLrQwgcK1i/BRDl2m0EKZvbnxV5fG9QRhwJJGshjsZTUTS6dkfURQ2K6aAvgNw/3Q==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/read@1.0.1': + resolution: {integrity: sha512-nzvSC6RcTiWf/dsuwZFXpLzGGsRHYCL68U3uHV7srsulU93aVWY7u2GEJiDZ+4GIIElfaW5EqtKC0UHroY+LTQ==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/should-skip-package@1.0.0': + resolution: {integrity: sha512-pwqoJmbONn1XgXmZXPEExgAaT+HdZLjALFTDgIm+PnS5KeO2nLtzA2/Q+4aMFY14kFMuXKG30MObhvDzWgzDgg==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/types@7.0.0': + resolution: {integrity: sha512-c5GoiQyt3pxiXjrWSNoP8/GRf4kG+VnKzovx1OQM8dYYALlSwgedmkPmJ+ZqGxqwg9D3Bkj85Uo4KLd5BN3A0w==} + engines: {node: ^22.11 || ^24 || >=26} + + '@changesets/write@1.0.1': + resolution: {integrity: sha512-q/ThtP9gcnEP6xlv7LrY26C2mHqdGBti/MmOVngt/M/oIGYkssmQGxPK9WzBNt2juVcH/vml2WQ+ra8LXYOTaA==} + engines: {node: ^22.11 || ^24 || >=26} + '@chevrotain/cst-dts-gen@13.2.0': resolution: {integrity: sha512-bA9dvWlhAUcHkNwU+8w9yiUxJPlj/Lm3VqS7MD+NbIR/7LmpNLuK/AWNFdCo/T3SK5ND0/UHf3IJvl/Jn/i6yg==} @@ -1930,6 +2005,18 @@ packages: peerDependencies: vue: '>=3.0.1' + '@manypkg/find-root@3.1.0': + resolution: {integrity: sha512-BcSqCyKhBVZ5YkSzOiheMCV41kqAFptW6xGqYSTjkVTl9XQpr+pqHhwgGCOHQtjDCv7Is6EFyA14Sm5GVbVABA==} + engines: {node: '>=20.0.0'} + + '@manypkg/get-packages@3.1.0': + resolution: {integrity: sha512-0TbBVyvPrP7xGYBI/cP8UP+yl/z+HtbTttAD7FMAJgn/kXOTwh5/60TsqP9ZYY710forNfyV0N8P/IE/ujGZJg==} + engines: {node: '>=20.0.0'} + + '@manypkg/tools@2.1.2': + resolution: {integrity: sha512-6QEf6yqFbETdwGITKq57aYoPfX/3K8XFNwsAlx0C1M7o8cb79sv1M3w+tWuWvIcSbNqrLF7OD7YpZMVVz335hQ==} + engines: {node: '>=20.0.0'} + '@marijn/find-cluster-break@1.0.4': resolution: {integrity: sha512-Wy0V7+SGUjnF9/TkiM1hKVDPj7jKXduPNboMVtHTA8dySMURWqfg/JZ9E2Sq8JgSJmkl7k7Qe9FLeMSrSraWmQ==} @@ -2171,6 +2258,10 @@ packages: resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} engines: {node: ^14.18.0 || >=16.0.0} + '@pnpm/deps.graph-sequencer@1100.0.1': + resolution: {integrity: sha512-pOr5+q1fLYKwFN3LAJuGZEnfXDcQ73zqgDHMtGy+K+uIoUqyY+6MeDCWFwfu+4EFuq76I5EPFofoNAI+Bmmq4A==} + engines: {node: '>=22.13'} + '@polka/url@1.0.0-next.29': resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} @@ -3637,6 +3728,9 @@ packages: resolution: {integrity: sha512-JQUCCK+/CAGbGGx618PlFZMXH81Jtj7t73CHv9dd/zVWvxgGT2zLFRjnKb+Ng46GIwcy+f7f88qd4duqllK+WQ==} engines: {node: ^22.14.0 || >=24.0.0} + dataloader@2.2.3: + resolution: {integrity: sha512-y2krtASINtPFS1rSDjacrFgn1dcUuoREVabwlOGOe4SdxenREqwjwjElAdwvbGM7kgZz9a3KVicWR7vcz8rnzA==} + dayjs@1.11.23: resolution: {integrity: sha512-QDTCU0M0MxR3hQfnlDJfwekQiaanm1ubOD231u73WBckQ/fsamwRLiE2GBz6D3a/xF1NgfiDLJjXBa1hYOYTtQ==} @@ -4421,6 +4515,10 @@ packages: httpxy@0.5.5: resolution: {integrity: sha512-uDjmnPyp1q4Sgzf3w+J/Fc6UqcCEj0x4Wjp7OqK5dGhNeDgpyrAmnS6ey8QWrX3SWDon2DMKf9sBa5X9+CVyMA==} + human-id@4.2.2: + resolution: {integrity: sha512-Z+8unD6em/MJwyrkWQ2M3wygRGI1+MztbutiNwk1DCuEPXOZRWGjtcMPZYP1exY9iNZMhd7ZOSMQSo9WYtiQRw==} + hasBin: true + iconv-lite@0.4.24: resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} engines: {node: '>=0.10.0'} @@ -4610,6 +4708,9 @@ packages: resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} hasBin: true + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} @@ -4711,6 +4812,9 @@ packages: kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + launch-editor@2.14.2: + resolution: {integrity: sha512-NHJEb30MGBCkmZXLZwz25t37QR4aY03ZzPYUJXOJaOa92uWwExI9SBQUuIznBYc1xkD7cJNGX7oc3Nl3sq2kQQ==} + layout-base@1.0.2: resolution: {integrity: sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==} @@ -7414,6 +7518,119 @@ snapshots: hashery: 1.5.1 keyv: 5.6.0 + '@changesets/apply-release-plan@8.1.1': + dependencies: + '@changesets/config': 4.0.1 + '@changesets/format': 0.1.3 + '@changesets/git': 4.0.1 + '@changesets/should-skip-package': 1.0.0 + '@changesets/types': 7.0.0 + import-meta-resolve: 4.2.0 + jsonc-parser: 3.3.1 + semver: 7.8.5 + + '@changesets/assemble-release-plan@7.0.0': + dependencies: + '@changesets/errors': 1.0.0 + '@changesets/get-dependents-graph': 3.0.0 + '@changesets/should-skip-package': 1.0.0 + '@changesets/types': 7.0.0 + semver: 7.8.5 + + '@changesets/changelog-git@1.0.0': + dependencies: + '@changesets/types': 7.0.0 + + '@changesets/changelog-github@1.0.1': + dependencies: + '@changesets/get-github-info': 1.0.1 + '@changesets/types': 7.0.0 + + '@changesets/cli@3.0.2': + dependencies: + '@changesets/apply-release-plan': 8.1.1 + '@changesets/assemble-release-plan': 7.0.0 + '@changesets/changelog-git': 1.0.0 + '@changesets/config': 4.0.1 + '@changesets/errors': 1.0.0 + '@changesets/get-dependents-graph': 3.0.0 + '@changesets/git': 4.0.1 + '@changesets/pre': 3.0.0 + '@changesets/read': 1.0.1 + '@changesets/should-skip-package': 1.0.0 + '@changesets/types': 7.0.0 + '@changesets/write': 1.0.1 + '@clack/prompts': 1.8.1 + '@manypkg/get-packages': 3.1.0 + '@pnpm/deps.graph-sequencer': 1100.0.1 + cac: 7.1.0 + import-meta-resolve: 4.2.0 + launch-editor: 2.14.2 + package-manager-detector: 1.9.0 + semver: 7.8.5 + tinyexec: 1.3.1 + + '@changesets/config@4.0.1': + dependencies: + '@changesets/get-dependents-graph': 3.0.0 + '@changesets/should-skip-package': 1.0.0 + '@changesets/types': 7.0.0 + '@manypkg/get-packages': 3.1.0 + picomatch: 4.0.7 + + '@changesets/errors@1.0.0': {} + + '@changesets/format@0.1.3': + dependencies: + package-manager-detector: 1.9.0 + tinyexec: 1.3.1 + + '@changesets/get-dependents-graph@3.0.0': + dependencies: + '@changesets/types': 7.0.0 + semver: 7.8.5 + + '@changesets/get-github-info@1.0.1': + dependencies: + dataloader: 2.2.3 + + '@changesets/git@4.0.1': + dependencies: + '@changesets/errors': 1.0.0 + '@changesets/types': 7.0.0 + '@manypkg/get-packages': 3.1.0 + picomatch: 4.0.7 + tinyexec: 1.3.1 + + '@changesets/parse@1.0.0': + dependencies: + '@changesets/types': 7.0.0 + yaml: 2.9.1 + + '@changesets/pre@3.0.0': + dependencies: + '@changesets/errors': 1.0.0 + '@changesets/types': 7.0.0 + '@manypkg/get-packages': 3.1.0 + + '@changesets/read@1.0.1': + dependencies: + '@changesets/git': 4.0.1 + '@changesets/parse': 1.0.0 + '@changesets/types': 7.0.0 + + '@changesets/should-skip-package@1.0.0': + dependencies: + '@changesets/types': 7.0.0 + + '@changesets/types@7.0.0': {} + + '@changesets/write@1.0.1': + dependencies: + '@changesets/format': 0.1.3 + '@changesets/types': 7.0.0 + human-id: 4.2.2 + '@chevrotain/cst-dts-gen@13.2.0': dependencies: '@chevrotain/gast': 13.2.0 @@ -8201,6 +8418,21 @@ snapshots: dependencies: vue: 3.5.44(typescript@6.0.3) + '@manypkg/find-root@3.1.0': + dependencies: + '@manypkg/tools': 2.1.2 + + '@manypkg/get-packages@3.1.0': + dependencies: + '@manypkg/find-root': 3.1.0 + '@manypkg/tools': 2.1.2 + + '@manypkg/tools@2.1.2': + dependencies: + jju: 1.4.0 + tinyglobby: 0.2.17 + yaml: 2.9.1 + '@marijn/find-cluster-break@1.0.4': {} '@mermaid-js/parser@2.0.1': @@ -8342,6 +8574,8 @@ snapshots: '@pkgr/core@0.3.6': {} + '@pnpm/deps.graph-sequencer@1100.0.1': {} + '@polka/url@1.0.0-next.29': {} '@popperjs/core@2.11.8': {} @@ -9906,6 +10140,8 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' + dataloader@2.2.3: {} + dayjs@1.11.23: {} debug@2.6.9(supports-color@10.2.2): @@ -10780,6 +11016,8 @@ snapshots: httpxy@0.5.5: {} + human-id@4.2.2: {} + iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -10923,6 +11161,8 @@ snapshots: jiti@2.7.0: {} + jju@1.4.0: {} + js-tokens@10.0.0: {} js-tokens@4.0.0: {} @@ -11043,6 +11283,11 @@ snapshots: kolorist@1.8.0: {} + launch-editor@2.14.2: + dependencies: + picocolors: 1.1.1 + shell-quote: 1.12.0 + layout-base@1.0.2: {} layout-base@2.0.1: {} diff --git a/scripts/release.js b/scripts/release.js deleted file mode 100644 index 586804b209..0000000000 --- a/scripts/release.js +++ /dev/null @@ -1,48 +0,0 @@ -import fs from 'fs/promises'; -import path from 'path'; -import { fileURLToPath } from 'url'; -import packageJson from '../packages/md-cli/package.json' assert { type: 'json' }; -import child_process from 'child_process'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = path.dirname(__filename); - -(async function () { - const execCommand = (arr) => - (Array.isArray(arr) ? arr : [arr]).forEach((c) => { - try { - console.log(`start: ${c}...`); - console.log(child_process.execSync(c).toString("utf8")); - } catch (error) { - console.log("\x1B[31m%s\x1B[0m", error.stdout.toString()); - process.exit(1); - } - }); - const getNewVersion = (oldVersion, version = "patch") => { - // [ | major | minor | patch] - if (/^([0-9]+\.*)+$/.test(version)) return version; - const types = ["major", "minor", "patch"]; - const index = types.indexOf(version); - if (index >= 0) { - const versionArr = oldVersion.split("."); - versionArr[index] = Number(versionArr[index]) + 1; - return versionArr.map((e, i) => (i > index ? 0 : e)).join("."); - } - return getNewVersion(oldVersion); - }; - const newVersionObj = { - version: getNewVersion(packageJson.version, process.argv[2]), - }; - await fs.writeFile( - path.resolve(__dirname, "../packages/md-cli/package.json"), - JSON.stringify(Object.assign({}, packageJson, newVersionObj), null, 2) + - "\n" - ); - console.log(newVersionObj); - execCommand([ - `git commit -a -m 'chore: update version cli-v${newVersionObj.version}'`, - `git tag cli-v${newVersionObj.version}`, - "git push && git push --tags", - ]); - console.log("\x1B[32m%s\x1B[0m", "发布完成,请关注 GitHub CI 构建"); -})();