mirror of
https://github.com/pnpm/pnpm.git
synced 2026-03-28 03:51:40 -04:00
* feat: switch from pkg to Node.js SEA for creating standalone executables Replace @yao-pkg/pkg with Node.js native Single Executable Applications (--build-sea, Node.js 25.5+). The SEA binary embeds only pnpm.cjs (CJS bootstrap), while pnpm.mjs and all assets live in a dist/ directory shipped alongside the binary in platform-specific tarballs. * refactor: move dist/ from platform packages to @pnpm/exe The dist/ directory (pnpm.mjs, worker.js, templates, etc.) is identical across all platforms, so ship it once in @pnpm/exe instead of duplicating it in each platform package. Platform packages now only contain the binary. The self-updater installs @pnpm/exe (not the platform package) so it gets both dist/ and the binary via optionalDependencies. * refactor: externalize @reflink/reflink in esbuild bundle Make @reflink/reflink external in both the main and worker esbuild bundles so the require() calls resolve at runtime from dist/node_modules instead of being inlined. Add @reflink/reflink as a production dependency of both pnpm (bundled into dist/node_modules by bundle-deps.ts) and @pnpm/exe (installed by npm alongside the binary). For GitHub release tarballs, only the target platform's reflink package is kept. For @pnpm/exe npm publishing, all reflink platform packages are stripped from dist/ since npm installs the right one automatically. * chore: update cspell list * test: update system-node-version tests for SEA detection Mock @pnpm/cli-meta's detectIfCurrentPkgIsExecutable instead of setting process.pkg, which is no longer used for SEA detection. * test: improve cli-meta test coverage for SEA migration Add tests for detectIfCurrentPkgIsExecutable() (non-SEA path) and isExecutedByCorepack() which were previously untested. The SEA=true path of detectIfCurrentPkgIsExecutable() cannot be unit tested since node:sea is unavailable in an ESM test environment. * refactor: move GitHub tarball assembly to copy-artifacts.ts build-artifacts.ts (prepublishOnly of @pnpm/exe) now only builds the SEA executables and prepares the exe npm dist/. The per-target dist/ assembly for GitHub release tarballs moves to copy-artifacts.ts, which is the natural owner of that concern. Other changes: - Extract getReflinkKeepPackages/stripReflinkPackages to reflink-utils.ts with tests using node:test - Move --force from top-level pnpm install in release.yml to the pnpm deploy in bundle-deps.ts, where it is actually needed to install all @reflink/reflink-* platform packages into dist/node_modules - Change @pnpm/exe prepublishOnly to run pnpm's full prepublishOnly (compile + bundle-deps) so dist/node_modules is populated before build-artifacts.ts and copy-artifacts.ts read from pnpm/dist * fix: copy dist/ alongside binary when running pnpm setup for SEA When the pnpm CLI is a Node.js SEA binary, it requires a dist/ directory adjacent to the executable at runtime (containing pnpm.mjs and bundled node_modules). The copyCli function in plugin-commands-setup now copies dist/ from alongside the current binary into the tools directory so that the installed pnpm works correctly after `pnpm setup`. * fix: avoid argument list too long when creating Windows zip archives * fix: propagate errors in copy-artifacts script Previously errors in createArtifactTarball were swallowed, causing the script to exit 0 even when artifact creation failed. Now errors are re-thrown with a descriptive message, and the top-level IIFE has a .catch() handler that sets a non-zero exit code. * refactor: remove reflink-utils.ts from @pnpm/exe The stripReflinkPackages call in build-artifacts.ts stripped all platform packages while keeping @reflink/reflink. Instead, just remove the entire @reflink directory from dist/ — @pnpm/exe already declares @reflink/reflink as a runtime dependency, so npm installs it (along with the right platform package via optionalDependencies) automatically. This eliminates reflink-utils.ts, its tests, and the code duplication with copy-artifacts.ts.
69 lines
1.9 KiB
JSON
69 lines
1.9 KiB
JSON
{
|
|
"name": "@pnpm/tools.plugin-commands-self-updater",
|
|
"version": "1000.1.31",
|
|
"description": "A command for updating pnpm itself",
|
|
"keywords": [
|
|
"pnpm",
|
|
"pnpm11"
|
|
],
|
|
"license": "MIT",
|
|
"funding": "https://opencollective.com/pnpm",
|
|
"repository": "https://github.com/pnpm/pnpm/tree/main/tools/plugin-commands-self-updater",
|
|
"homepage": "https://github.com/pnpm/pnpm/tree/main/tools/plugin-commands-self-updater#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/pnpm/pnpm/issues"
|
|
},
|
|
"type": "module",
|
|
"main": "lib/index.js",
|
|
"types": "lib/index.d.ts",
|
|
"exports": {
|
|
".": "./lib/index.js"
|
|
},
|
|
"files": [
|
|
"lib",
|
|
"!*.map"
|
|
],
|
|
"scripts": {
|
|
"lint": "eslint \"src/**/*.ts\" \"test/**/*.ts\"",
|
|
"prepublishOnly": "pnpm run compile",
|
|
"test": "pnpm run compile && pnpm run _test",
|
|
"compile": "tsgo --build && pnpm run lint --fix",
|
|
"_test": "cross-env NODE_OPTIONS=\"$NODE_OPTIONS --experimental-vm-modules\" jest"
|
|
},
|
|
"dependencies": {
|
|
"@pnpm/cli-meta": "workspace:*",
|
|
"@pnpm/cli-utils": "workspace:*",
|
|
"@pnpm/client": "workspace:*",
|
|
"@pnpm/config": "workspace:*",
|
|
"@pnpm/error": "workspace:*",
|
|
"@pnpm/exec.pnpm-cli-runner": "workspace:*",
|
|
"@pnpm/link-bins": "workspace:*",
|
|
"@pnpm/read-project-manifest": "workspace:*",
|
|
"@pnpm/tools.path": "workspace:*",
|
|
"@zkochan/rimraf": "catalog:",
|
|
"path-temp": "catalog:",
|
|
"ramda": "catalog:",
|
|
"render-help": "catalog:",
|
|
"symlink-dir": "catalog:"
|
|
},
|
|
"peerDependencies": {
|
|
"@pnpm/logger": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@jest/globals": "catalog:",
|
|
"@pnpm/env.path": "workspace:*",
|
|
"@pnpm/prepare": "workspace:*",
|
|
"@pnpm/tools.plugin-commands-self-updater": "workspace:*",
|
|
"@types/cross-spawn": "catalog:",
|
|
"@types/ramda": "catalog:",
|
|
"cross-spawn": "catalog:",
|
|
"nock": "catalog:"
|
|
},
|
|
"engines": {
|
|
"node": ">=22.13"
|
|
},
|
|
"jest": {
|
|
"preset": "@pnpm/jest-config"
|
|
}
|
|
}
|