diff --git a/README.md b/README.md index 09fffb57..da2b5ff7 100644 --- a/README.md +++ b/README.md @@ -154,6 +154,8 @@ With `--comment=create`, each commit would generate a comment for itself, useful And `--comment=off` would turn off comments for maintainers who prefer minimal pull requests. +To customize which package manager is reflected in the comments, use the `--packageManager=XYZ` flag. XYZ can be one of the following: npm (default), pnpm, yarn, or bun. + For repositories with many packages, comments might get too long. In that case, you can use `--only-templates` to only show templates. pkg.pr.new uses `npm pack --json` under the hood, in case you face issues, you can also use the `--pnpm` flag so it starts using `pnpm pack`. This is not necessary in most cases. diff --git a/packages/cli/index.ts b/packages/cli/index.ts index c23f3d1b..6c654b9e 100644 --- a/packages/cli/index.ts +++ b/packages/cli/index.ts @@ -6,7 +6,6 @@ import { createHash } from "node:crypto"; import { hash } from "ohash"; import fsSync from "fs"; import fs from "fs/promises"; -import { detect } from "package-manager-detector"; import { getPackageManifest, type PackageManifest } from "query-registry"; import type { Comment } from "@pkg-pr-new/utils"; import { @@ -88,6 +87,12 @@ const main = defineCommand({ type: "mixed", description: `Save metadata to a JSON file. If true, log the output for piping. If a string, save the output to the specified file path.`, }, + packageManager: { + type: "string", + description: "Specify the package manager to use (npm, bun, pnpm, yarn)", + enum: ["npm", "bun", "pnpm", "yarn"], + default: "npm", + }, }, run: async ({ args }) => { const paths = @@ -113,6 +118,14 @@ const main = defineCommand({ const isOnlyTemplates = !!args["only-templates"]; const comment: Comment = args.comment as Comment; + const selectedPackageManager = args.packageManager as "npm" | "bun" | "pnpm" | "yarn"; + + if (!["npm", "bun", "pnpm", "yarn"].includes(selectedPackageManager)) { + console.error( + `Unsupported package manager: ${selectedPackageManager}. Supported managers are npm, bun, pnpm, yarn.` + ); + process.exit(1); + } if (!process.env.TEST && process.env.GITHUB_ACTIONS !== "true") { console.error( @@ -433,10 +446,6 @@ const main = defineCommand({ } } - const packageManager = await detect(); - const agent = packageManager.agent.includes("@") - ? packageManager.agent.split("@")[0] - : packageManager.agent; const res = await fetch(publishUrl, { method: "POST", headers: { @@ -445,7 +454,7 @@ const main = defineCommand({ "sb-key": key, "sb-shasums": JSON.stringify(shasums), "sb-run-id": GITHUB_RUN_ID, - "sb-package-manager": agent ?? "npm", + "sb-package-manager": selectedPackageManager, "sb-only-templates": `${isOnlyTemplates}`, }, body: formData, diff --git a/packages/cli/package.json b/packages/cli/package.json index 4cbff4f6..b9ebf13e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -25,7 +25,6 @@ "@octokit/action": "^6.1.0", "ignore": "^5.3.1", "isbinaryfile": "^5.0.2", - "package-manager-detector": "^0.1.2", "pkg-types": "^1.1.1", "query-registry": "^3.0.1", "tinyglobby": "^0.2.9" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7bb07a4e..64d973ef 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -116,9 +116,6 @@ importers: isbinaryfile: specifier: ^5.0.2 version: 5.0.2 - package-manager-detector: - specifier: ^0.1.2 - version: 0.1.2 pkg-types: specifier: ^1.1.1 version: 1.1.1 @@ -2808,9 +2805,6 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true - napi-wasm@1.1.0: - resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} - natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -2983,9 +2977,6 @@ packages: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} - package-manager-detector@0.1.2: - resolution: {integrity: sha512-iePyefLTOm2gEzbaZKSW+eBMjg+UYsQvUKxmvGXAQ987K16efBg10MxIjZs08iyX+DY2/owKY9DIdu193kX33w==} - parent-module@1.0.1: resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} engines: {node: '>=6'} @@ -4491,7 +4482,6 @@ snapshots: dependencies: is-glob: 4.0.3 micromatch: 4.0.5 - napi-wasm: 1.1.0 '@parcel/watcher-win32-arm64@2.4.1': optional: true @@ -4527,8 +4517,9 @@ snapshots: '@rollup/plugin-alias@5.1.0(rollup@4.18.0)': dependencies: - rollup: 4.18.0 slash: 4.0.0 + optionalDependencies: + rollup: 4.18.0 '@rollup/plugin-commonjs@25.0.7(rollup@4.18.0)': dependencies: @@ -4538,6 +4529,7 @@ snapshots: glob: 8.1.0 is-reference: 1.2.1 magic-string: 0.30.8 + optionalDependencies: rollup: 4.18.0 '@rollup/plugin-inject@5.0.5(rollup@4.18.0)': @@ -4545,11 +4537,13 @@ snapshots: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) estree-walker: 2.0.2 magic-string: 0.30.8 + optionalDependencies: rollup: 4.18.0 '@rollup/plugin-json@6.1.0(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) + optionalDependencies: rollup: 4.18.0 '@rollup/plugin-node-resolve@15.2.3(rollup@4.18.0)': @@ -4560,20 +4554,23 @@ snapshots: is-builtin-module: 3.2.1 is-module: 1.0.0 resolve: 1.22.8 + optionalDependencies: rollup: 4.18.0 '@rollup/plugin-replace@5.0.5(rollup@4.18.0)': dependencies: '@rollup/pluginutils': 5.1.0(rollup@4.18.0) magic-string: 0.30.8 + optionalDependencies: rollup: 4.18.0 '@rollup/plugin-terser@0.4.4(rollup@4.18.0)': dependencies: - rollup: 4.18.0 serialize-javascript: 6.0.2 smob: 1.4.1 terser: 5.29.2 + optionalDependencies: + rollup: 4.18.0 '@rollup/pluginutils@4.2.1': dependencies: @@ -4585,6 +4582,7 @@ snapshots: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + optionalDependencies: rollup: 4.18.0 '@rollup/rollup-android-arm-eabi@4.13.0': @@ -4712,7 +4710,7 @@ snapshots: '@types/semver@7.5.8': {} - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.5)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': dependencies: '@eslint-community/regexpp': 4.10.0 '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) @@ -4726,6 +4724,7 @@ snapshots: natural-compare-lite: 1.4.0 semver: 7.6.0 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -4737,6 +4736,7 @@ snapshots: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -4753,6 +4753,7 @@ snapshots: debug: 4.3.4 eslint: 8.57.0 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -4768,6 +4769,7 @@ snapshots: is-glob: 4.0.3 semver: 7.6.0 tsutils: 3.21.0(typescript@5.4.5) + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -5486,22 +5488,22 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-promise: 6.1.1(eslint@8.57.0) eslint-config-unjs@0.2.1(eslint@8.57.0)(typescript@5.4.5): dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2)(eslint-plugin-promise@6.1.1)(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-node: 11.1.0(eslint@8.57.0) eslint-plugin-promise: 6.1.1(eslint@8.57.0) @@ -5520,13 +5522,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.16.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 @@ -5537,13 +5539,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0)(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -5560,9 +5563,8 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -5571,7 +5573,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -5581,6 +5583,8 @@ snapshots: object.values: 1.2.0 semver: 6.3.1 tsconfig-paths: 3.15.0 + optionalDependencies: + '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5784,7 +5788,7 @@ snapshots: reusify: 1.0.4 fdir@6.4.0(picomatch@4.0.2): - dependencies: + optionalDependencies: picomatch: 4.0.2 file-entry-cache@6.0.1: @@ -6494,8 +6498,6 @@ snapshots: nanoid@3.3.7: {} - napi-wasm@1.1.0: {} - natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} @@ -6769,8 +6771,6 @@ snapshots: p-try@2.2.0: {} - package-manager-detector@0.1.2: {} - parent-module@1.0.1: dependencies: callsites: 3.1.0 @@ -6996,9 +6996,10 @@ snapshots: dependencies: open: 8.4.2 picomatch: 2.3.1 - rollup: 4.18.0 source-map: 0.7.4 yargs: 17.7.2 + optionalDependencies: + rollup: 4.18.0 rollup-pluginutils@2.8.2: dependencies: @@ -7397,6 +7398,7 @@ snapshots: source-map: 0.8.0-beta.0 sucrase: 3.35.0 tree-kill: 1.2.2 + optionalDependencies: typescript: 5.4.5 transitivePeerDependencies: - supports-color @@ -7538,13 +7540,14 @@ snapshots: chokidar: 3.6.0 destr: 2.0.3 h3: 1.11.1 - ioredis: 5.3.2 listhen: 1.7.2 lru-cache: 10.2.0 mri: 1.2.0 node-fetch-native: 1.6.4 ofetch: 1.3.4 ufo: 1.5.3 + optionalDependencies: + ioredis: 5.3.2 transitivePeerDependencies: - uWebSockets.js @@ -7644,7 +7647,6 @@ snapshots: wrangler@3.57.1(@cloudflare/workers-types@4.20240512.0): dependencies: '@cloudflare/kv-asset-handler': 0.3.2 - '@cloudflare/workers-types': 4.20240512.0 '@esbuild-plugins/node-globals-polyfill': 0.2.3(esbuild@0.17.19) '@esbuild-plugins/node-modules-polyfill': 0.2.2(esbuild@0.17.19) blake3-wasm: 2.1.5 @@ -7659,6 +7661,7 @@ snapshots: source-map: 0.6.1 xxhash-wasm: 1.0.2 optionalDependencies: + '@cloudflare/workers-types': 4.20240512.0 fsevents: 2.3.3 transitivePeerDependencies: - bufferutil