@ohos-npm-ports/pnpm 12.8.1-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +280 -0
- package/THIRD-PARTY-NOTICES.md +42 -0
- package/bin/pnpm.mjs +144 -0
- package/bin/pnpx.mjs +9 -0
- package/dist/node-gyp-bin/node-gyp +6 -0
- package/dist/node-gyp-bin/node-gyp.cmd +5 -0
- package/dist/node_modules/.bin/get-pnpm +88 -0
- package/dist/node_modules/.bin/node-gyp +88 -0
- package/dist/node_modules/.bin/node-which +88 -0
- package/dist/node_modules/.bin/nopt +88 -0
- package/dist/node_modules/.bin/semver +88 -0
- package/dist/node_modules/.pnpm-workspace-state-v1.json +348 -0
- package/dist/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
- package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
- package/dist/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
- package/dist/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
- package/dist/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
- package/dist/node_modules/@isaacs/fs-minipass/package.json +72 -0
- package/dist/node_modules/abbrev/LICENSE +46 -0
- package/dist/node_modules/abbrev/lib/index.js +53 -0
- package/dist/node_modules/abbrev/package.json +41 -0
- package/dist/node_modules/chownr/dist/commonjs/index.js +93 -0
- package/dist/node_modules/chownr/dist/commonjs/package.json +3 -0
- package/dist/node_modules/chownr/dist/esm/index.js +85 -0
- package/dist/node_modules/chownr/dist/esm/package.json +3 -0
- package/dist/node_modules/chownr/package.json +69 -0
- package/dist/node_modules/env-paths/index.js +74 -0
- package/dist/node_modules/env-paths/license +9 -0
- package/dist/node_modules/env-paths/package.json +45 -0
- package/dist/node_modules/exponential-backoff/LICENSE +202 -0
- package/dist/node_modules/exponential-backoff/dist/backoff.js +124 -0
- package/dist/node_modules/exponential-backoff/dist/delay/always/always.delay.js +25 -0
- package/dist/node_modules/exponential-backoff/dist/delay/delay.base.js +45 -0
- package/dist/node_modules/exponential-backoff/dist/delay/delay.factory.js +17 -0
- package/dist/node_modules/exponential-backoff/dist/delay/delay.interface.js +3 -0
- package/dist/node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js +82 -0
- package/dist/node_modules/exponential-backoff/dist/jitter/full/full.jitter.js +8 -0
- package/dist/node_modules/exponential-backoff/dist/jitter/jitter.factory.js +15 -0
- package/dist/node_modules/exponential-backoff/dist/jitter/no/no.jitter.js +7 -0
- package/dist/node_modules/exponential-backoff/dist/options.js +31 -0
- package/dist/node_modules/exponential-backoff/package.json +62 -0
- package/dist/node_modules/fdir/LICENSE +7 -0
- package/dist/node_modules/fdir/dist/index.cjs +588 -0
- package/dist/node_modules/fdir/dist/index.d.cts +155 -0
- package/dist/node_modules/fdir/dist/index.d.mts +155 -0
- package/dist/node_modules/fdir/dist/index.mjs +570 -0
- package/dist/node_modules/fdir/package.json +103 -0
- package/dist/node_modules/get-pnpm/bin/get-pnpm.js +11 -0
- package/dist/node_modules/get-pnpm/lib/downloadExecutable.js +108 -0
- package/dist/node_modules/get-pnpm/lib/extractTarball.js +23 -0
- package/dist/node_modules/get-pnpm/lib/extractTarballMember.js +128 -0
- package/dist/node_modules/get-pnpm/lib/index.js +220 -0
- package/dist/node_modules/get-pnpm/lib/npmSigningKeys.js +23 -0
- package/dist/node_modules/get-pnpm/lib/platformPackageName.js +75 -0
- package/dist/node_modules/get-pnpm/lib/registry.js +163 -0
- package/dist/node_modules/get-pnpm/lib/resolveVersion.js +36 -0
- package/dist/node_modules/get-pnpm/lib/sameFileContents.js +45 -0
- package/dist/node_modules/get-pnpm/lib/verifySignature.js +51 -0
- package/dist/node_modules/get-pnpm/package.json +45 -0
- package/dist/node_modules/graceful-fs/LICENSE +15 -0
- package/dist/node_modules/graceful-fs/clone.js +23 -0
- package/dist/node_modules/graceful-fs/graceful-fs.js +448 -0
- package/dist/node_modules/graceful-fs/legacy-streams.js +118 -0
- package/dist/node_modules/graceful-fs/package.json +53 -0
- package/dist/node_modules/graceful-fs/polyfills.js +355 -0
- package/dist/node_modules/isexe/dist/commonjs/index.js +56 -0
- package/dist/node_modules/isexe/dist/commonjs/index.min.js +2 -0
- package/dist/node_modules/isexe/dist/commonjs/options.js +3 -0
- package/dist/node_modules/isexe/dist/commonjs/package.json +3 -0
- package/dist/node_modules/isexe/dist/commonjs/posix.js +67 -0
- package/dist/node_modules/isexe/dist/commonjs/win32.js +63 -0
- package/dist/node_modules/isexe/dist/esm/index.js +16 -0
- package/dist/node_modules/isexe/dist/esm/index.min.js +2 -0
- package/dist/node_modules/isexe/dist/esm/options.js +2 -0
- package/dist/node_modules/isexe/dist/esm/package.json +3 -0
- package/dist/node_modules/isexe/dist/esm/posix.js +62 -0
- package/dist/node_modules/isexe/dist/esm/win32.js +58 -0
- package/dist/node_modules/isexe/package.json +78 -0
- package/dist/node_modules/minipass/dist/commonjs/index.js +1038 -0
- package/dist/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/dist/node_modules/minipass/dist/esm/index.js +1020 -0
- package/dist/node_modules/minipass/dist/esm/package.json +3 -0
- package/dist/node_modules/minipass/package.json +77 -0
- package/dist/node_modules/minizlib/LICENSE +26 -0
- package/dist/node_modules/minizlib/dist/commonjs/constants.js +123 -0
- package/dist/node_modules/minizlib/dist/commonjs/index.js +416 -0
- package/dist/node_modules/minizlib/dist/commonjs/package.json +3 -0
- package/dist/node_modules/minizlib/dist/esm/constants.js +117 -0
- package/dist/node_modules/minizlib/dist/esm/index.js +363 -0
- package/dist/node_modules/minizlib/dist/esm/package.json +3 -0
- package/dist/node_modules/minizlib/package.json +80 -0
- package/dist/node_modules/node-gyp/.release-please-manifest.json +3 -0
- package/dist/node_modules/node-gyp/LICENSE +24 -0
- package/dist/node_modules/node-gyp/addon.gypi +204 -0
- package/dist/node_modules/node-gyp/bin/node-gyp.js +145 -0
- package/dist/node_modules/node-gyp/eslint.config.js +3 -0
- package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +3 -0
- package/dist/node_modules/node-gyp/gyp/LICENSE +28 -0
- package/dist/node_modules/node-gyp/gyp/data/ninja/build.ninja +4 -0
- package/dist/node_modules/node-gyp/gyp/data/win/large-pdb-shim.cc +12 -0
- package/dist/node_modules/node-gyp/gyp/gyp +8 -0
- package/dist/node_modules/node-gyp/gyp/gyp.bat +5 -0
- package/dist/node_modules/node-gyp/gyp/gyp_main.py +45 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSNew.py +365 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSProject.py +206 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings.py +1283 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSSettings_test.py +1545 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSToolFile.py +59 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUserFile.py +152 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSUtil.py +270 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +607 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +706 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/common.py +725 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/common_test.py +186 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml.py +170 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/easy_xml_test.py +113 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/flock_tool.py +55 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/__init__.py +0 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/analyzer.py +805 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/android.py +1169 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/cmake.py +1316 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/compile_commands_json.py +128 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/dump_dependency_json.py +104 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/eclipse.py +461 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypd.py +88 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/gypsh.py +55 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/make.py +2755 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +3970 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs_test.py +44 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2957 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +77 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode.py +1389 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/xcode_test.py +26 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/input.py +3097 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/input_test.py +99 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +765 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1255 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/ninja_syntax.py +174 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +61 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/win_tool.py +371 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation.py +1936 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_emulation_test.py +54 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcode_ninja.py +301 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/xcodeproj_file.py +3180 -0
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/xml_fix.py +64 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE +3 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.APACHE +177 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/LICENSE.BSD +23 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/__init__.py +15 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_elffile.py +107 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_manylinux.py +252 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_musllinux.py +83 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_parser.py +359 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_structures.py +61 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/_tokenizer.py +192 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/markers.py +251 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +807 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/py.typed +0 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/requirements.py +90 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/specifiers.py +1030 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +541 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/utils.py +172 -0
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/version.py +563 -0
- package/dist/node_modules/node-gyp/gyp/pyproject.toml +116 -0
- package/dist/node_modules/node-gyp/gyp/release-please-config.json +11 -0
- package/dist/node_modules/node-gyp/gyp/test_gyp.py +260 -0
- package/dist/node_modules/node-gyp/lib/Find-VisualStudio.cs +250 -0
- package/dist/node_modules/node-gyp/lib/build.js +230 -0
- package/dist/node_modules/node-gyp/lib/clean.js +15 -0
- package/dist/node_modules/node-gyp/lib/configure.js +328 -0
- package/dist/node_modules/node-gyp/lib/create-config-gypi.js +153 -0
- package/dist/node_modules/node-gyp/lib/download.js +86 -0
- package/dist/node_modules/node-gyp/lib/find-node-directory.js +63 -0
- package/dist/node_modules/node-gyp/lib/find-python.js +304 -0
- package/dist/node_modules/node-gyp/lib/find-visualstudio.js +606 -0
- package/dist/node_modules/node-gyp/lib/install.js +411 -0
- package/dist/node_modules/node-gyp/lib/list.js +26 -0
- package/dist/node_modules/node-gyp/lib/log.js +168 -0
- package/dist/node_modules/node-gyp/lib/node-gyp.js +199 -0
- package/dist/node_modules/node-gyp/lib/process-release.js +144 -0
- package/dist/node_modules/node-gyp/lib/rebuild.js +12 -0
- package/dist/node_modules/node-gyp/lib/remove.js +43 -0
- package/dist/node_modules/node-gyp/lib/util.js +81 -0
- package/dist/node_modules/node-gyp/macOS_Catalina_acid_test.sh +21 -0
- package/dist/node_modules/node-gyp/package.json +52 -0
- package/dist/node_modules/node-gyp/release-please-config.json +40 -0
- package/dist/node_modules/node-gyp/src/win_delay_load_hook.cc +41 -0
- package/dist/node_modules/nopt/LICENSE +15 -0
- package/dist/node_modules/nopt/bin/nopt.js +29 -0
- package/dist/node_modules/nopt/lib/debug.js +5 -0
- package/dist/node_modules/nopt/lib/nopt-lib.js +514 -0
- package/dist/node_modules/nopt/lib/nopt.js +34 -0
- package/dist/node_modules/nopt/lib/type-defs.js +91 -0
- package/dist/node_modules/nopt/package.json +52 -0
- package/dist/node_modules/picomatch/LICENSE +21 -0
- package/dist/node_modules/picomatch/index.js +17 -0
- package/dist/node_modules/picomatch/lib/constants.js +184 -0
- package/dist/node_modules/picomatch/lib/parse.js +1425 -0
- package/dist/node_modules/picomatch/lib/picomatch.js +361 -0
- package/dist/node_modules/picomatch/lib/scan.js +403 -0
- package/dist/node_modules/picomatch/lib/utils.js +72 -0
- package/dist/node_modules/picomatch/package.json +83 -0
- package/dist/node_modules/picomatch/posix.js +3 -0
- package/dist/node_modules/proc-log/LICENSE +15 -0
- package/dist/node_modules/proc-log/lib/index.js +158 -0
- package/dist/node_modules/proc-log/package.json +46 -0
- package/dist/node_modules/semver/LICENSE +15 -0
- package/dist/node_modules/semver/bin/semver.js +195 -0
- package/dist/node_modules/semver/classes/comparator.js +143 -0
- package/dist/node_modules/semver/classes/index.js +7 -0
- package/dist/node_modules/semver/classes/range.js +577 -0
- package/dist/node_modules/semver/classes/semver.js +350 -0
- package/dist/node_modules/semver/functions/clean.js +8 -0
- package/dist/node_modules/semver/functions/cmp.js +54 -0
- package/dist/node_modules/semver/functions/coerce.js +62 -0
- package/dist/node_modules/semver/functions/compare-build.js +9 -0
- package/dist/node_modules/semver/functions/compare-loose.js +5 -0
- package/dist/node_modules/semver/functions/compare.js +7 -0
- package/dist/node_modules/semver/functions/diff.js +60 -0
- package/dist/node_modules/semver/functions/eq.js +5 -0
- package/dist/node_modules/semver/functions/gt.js +5 -0
- package/dist/node_modules/semver/functions/gte.js +5 -0
- package/dist/node_modules/semver/functions/inc.js +21 -0
- package/dist/node_modules/semver/functions/lt.js +5 -0
- package/dist/node_modules/semver/functions/lte.js +5 -0
- package/dist/node_modules/semver/functions/major.js +5 -0
- package/dist/node_modules/semver/functions/minor.js +5 -0
- package/dist/node_modules/semver/functions/neq.js +5 -0
- package/dist/node_modules/semver/functions/parse.js +18 -0
- package/dist/node_modules/semver/functions/patch.js +5 -0
- package/dist/node_modules/semver/functions/prerelease.js +8 -0
- package/dist/node_modules/semver/functions/rcompare.js +5 -0
- package/dist/node_modules/semver/functions/rsort.js +5 -0
- package/dist/node_modules/semver/functions/satisfies.js +12 -0
- package/dist/node_modules/semver/functions/sort.js +5 -0
- package/dist/node_modules/semver/functions/truncate.js +48 -0
- package/dist/node_modules/semver/functions/valid.js +8 -0
- package/dist/node_modules/semver/index.js +93 -0
- package/dist/node_modules/semver/internal/constants.js +37 -0
- package/dist/node_modules/semver/internal/debug.js +11 -0
- package/dist/node_modules/semver/internal/identifiers.js +29 -0
- package/dist/node_modules/semver/internal/lrucache.js +42 -0
- package/dist/node_modules/semver/internal/parse-options.js +17 -0
- package/dist/node_modules/semver/internal/re.js +223 -0
- package/dist/node_modules/semver/package.json +78 -0
- package/dist/node_modules/semver/preload.js +4 -0
- package/dist/node_modules/semver/range.bnf +17 -0
- package/dist/node_modules/semver/ranges/gtr.js +6 -0
- package/dist/node_modules/semver/ranges/intersects.js +9 -0
- package/dist/node_modules/semver/ranges/ltr.js +6 -0
- package/dist/node_modules/semver/ranges/max-satisfying.js +27 -0
- package/dist/node_modules/semver/ranges/min-satisfying.js +26 -0
- package/dist/node_modules/semver/ranges/min-version.js +63 -0
- package/dist/node_modules/semver/ranges/outside.js +82 -0
- package/dist/node_modules/semver/ranges/simplify.js +49 -0
- package/dist/node_modules/semver/ranges/subset.js +249 -0
- package/dist/node_modules/semver/ranges/to-comparators.js +10 -0
- package/dist/node_modules/semver/ranges/valid.js +13 -0
- package/dist/node_modules/tar/dist/commonjs/create.js +82 -0
- package/dist/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
- package/dist/node_modules/tar/dist/commonjs/extract.js +88 -0
- package/dist/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
- package/dist/node_modules/tar/dist/commonjs/header.js +348 -0
- package/dist/node_modules/tar/dist/commonjs/index.js +64 -0
- package/dist/node_modules/tar/dist/commonjs/index.min.js +4 -0
- package/dist/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
- package/dist/node_modules/tar/dist/commonjs/list.js +153 -0
- package/dist/node_modules/tar/dist/commonjs/make-command.js +52 -0
- package/dist/node_modules/tar/dist/commonjs/mkdir.js +187 -0
- package/dist/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
- package/dist/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
- package/dist/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
- package/dist/node_modules/tar/dist/commonjs/options.js +66 -0
- package/dist/node_modules/tar/dist/commonjs/pack.js +544 -0
- package/dist/node_modules/tar/dist/commonjs/package.json +3 -0
- package/dist/node_modules/tar/dist/commonjs/parse.js +655 -0
- package/dist/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
- package/dist/node_modules/tar/dist/commonjs/pax.js +182 -0
- package/dist/node_modules/tar/dist/commonjs/process-umask.js +7 -0
- package/dist/node_modules/tar/dist/commonjs/read-entry.js +136 -0
- package/dist/node_modules/tar/dist/commonjs/replace.js +227 -0
- package/dist/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
- package/dist/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
- package/dist/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
- package/dist/node_modules/tar/dist/commonjs/types.js +70 -0
- package/dist/node_modules/tar/dist/commonjs/unpack.js +932 -0
- package/dist/node_modules/tar/dist/commonjs/update.js +33 -0
- package/dist/node_modules/tar/dist/commonjs/warn-method.js +31 -0
- package/dist/node_modules/tar/dist/commonjs/winchars.js +14 -0
- package/dist/node_modules/tar/dist/commonjs/write-entry.js +698 -0
- package/dist/node_modules/tar/dist/esm/create.js +76 -0
- package/dist/node_modules/tar/dist/esm/cwd-error.js +14 -0
- package/dist/node_modules/tar/dist/esm/extract.js +49 -0
- package/dist/node_modules/tar/dist/esm/get-write-flag.js +26 -0
- package/dist/node_modules/tar/dist/esm/header.js +311 -0
- package/dist/node_modules/tar/dist/esm/index.js +20 -0
- package/dist/node_modules/tar/dist/esm/index.min.js +4 -0
- package/dist/node_modules/tar/dist/esm/large-numbers.js +94 -0
- package/dist/node_modules/tar/dist/esm/list.js +113 -0
- package/dist/node_modules/tar/dist/esm/make-command.js +48 -0
- package/dist/node_modules/tar/dist/esm/mkdir.js +179 -0
- package/dist/node_modules/tar/dist/esm/mode-fix.js +25 -0
- package/dist/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
- package/dist/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
- package/dist/node_modules/tar/dist/esm/options.js +54 -0
- package/dist/node_modules/tar/dist/esm/pack.js +502 -0
- package/dist/node_modules/tar/dist/esm/package.json +3 -0
- package/dist/node_modules/tar/dist/esm/parse.js +651 -0
- package/dist/node_modules/tar/dist/esm/path-reservations.js +166 -0
- package/dist/node_modules/tar/dist/esm/pax.js +178 -0
- package/dist/node_modules/tar/dist/esm/process-umask.js +3 -0
- package/dist/node_modules/tar/dist/esm/read-entry.js +132 -0
- package/dist/node_modules/tar/dist/esm/replace.js +221 -0
- package/dist/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
- package/dist/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
- package/dist/node_modules/tar/dist/esm/symlink-error.js +15 -0
- package/dist/node_modules/tar/dist/esm/types.js +65 -0
- package/dist/node_modules/tar/dist/esm/unpack.js +891 -0
- package/dist/node_modules/tar/dist/esm/update.js +30 -0
- package/dist/node_modules/tar/dist/esm/warn-method.js +27 -0
- package/dist/node_modules/tar/dist/esm/winchars.js +9 -0
- package/dist/node_modules/tar/dist/esm/write-entry.js +656 -0
- package/dist/node_modules/tar/package.json +298 -0
- package/dist/node_modules/tinyglobby/LICENSE +21 -0
- package/dist/node_modules/tinyglobby/dist/index.cjs +335 -0
- package/dist/node_modules/tinyglobby/dist/index.d.cts +148 -0
- package/dist/node_modules/tinyglobby/dist/index.d.mts +148 -0
- package/dist/node_modules/tinyglobby/dist/index.mjs +307 -0
- package/dist/node_modules/tinyglobby/package.json +70 -0
- package/dist/node_modules/undici/LICENSE +21 -0
- package/dist/node_modules/undici/index-fetch.js +35 -0
- package/dist/node_modules/undici/index.js +169 -0
- package/dist/node_modules/undici/lib/api/abort-signal.js +57 -0
- package/dist/node_modules/undici/lib/api/api-connect.js +108 -0
- package/dist/node_modules/undici/lib/api/api-pipeline.js +251 -0
- package/dist/node_modules/undici/lib/api/api-request.js +214 -0
- package/dist/node_modules/undici/lib/api/api-stream.js +220 -0
- package/dist/node_modules/undici/lib/api/api-upgrade.js +108 -0
- package/dist/node_modules/undici/lib/api/index.js +7 -0
- package/dist/node_modules/undici/lib/api/readable.js +385 -0
- package/dist/node_modules/undici/lib/api/util.js +93 -0
- package/dist/node_modules/undici/lib/core/connect.js +240 -0
- package/dist/node_modules/undici/lib/core/constants.js +118 -0
- package/dist/node_modules/undici/lib/core/diagnostics.js +202 -0
- package/dist/node_modules/undici/lib/core/errors.js +425 -0
- package/dist/node_modules/undici/lib/core/request.js +416 -0
- package/dist/node_modules/undici/lib/core/symbols.js +67 -0
- package/dist/node_modules/undici/lib/core/tree.js +152 -0
- package/dist/node_modules/undici/lib/core/util.js +719 -0
- package/dist/node_modules/undici/lib/dispatcher/agent.js +129 -0
- package/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +209 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h1.js +1504 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h2.js +744 -0
- package/dist/node_modules/undici/lib/dispatcher/client.js +623 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +199 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher.js +65 -0
- package/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +160 -0
- package/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +117 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-base.js +194 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
- package/dist/node_modules/undici/lib/dispatcher/pool.js +107 -0
- package/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +274 -0
- package/dist/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/dist/node_modules/undici/lib/global.js +32 -0
- package/dist/node_modules/undici/lib/handler/decorator-handler.js +44 -0
- package/dist/node_modules/undici/lib/handler/redirect-handler.js +232 -0
- package/dist/node_modules/undici/lib/handler/retry-handler.js +434 -0
- package/dist/node_modules/undici/lib/interceptor/dns.js +375 -0
- package/dist/node_modules/undici/lib/interceptor/dump.js +123 -0
- package/dist/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
- package/dist/node_modules/undici/lib/interceptor/redirect.js +24 -0
- package/dist/node_modules/undici/lib/interceptor/response-error.js +86 -0
- package/dist/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/dist/node_modules/undici/lib/llhttp/constants.js +278 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/utils.js +15 -0
- package/dist/node_modules/undici/lib/mock/mock-agent.js +160 -0
- package/dist/node_modules/undici/lib/mock/mock-client.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-errors.js +28 -0
- package/dist/node_modules/undici/lib/mock/mock-interceptor.js +207 -0
- package/dist/node_modules/undici/lib/mock/mock-pool.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-symbols.js +23 -0
- package/dist/node_modules/undici/lib/mock/mock-utils.js +367 -0
- package/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/dist/node_modules/undici/lib/mock/pluralizer.js +29 -0
- package/dist/node_modules/undici/lib/util/timers.js +423 -0
- package/dist/node_modules/undici/lib/web/cache/cache.js +859 -0
- package/dist/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/dist/node_modules/undici/lib/web/cache/symbols.js +5 -0
- package/dist/node_modules/undici/lib/web/cache/util.js +45 -0
- package/dist/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/dist/node_modules/undici/lib/web/cookies/index.js +184 -0
- package/dist/node_modules/undici/lib/web/cookies/parse.js +310 -0
- package/dist/node_modules/undici/lib/web/cookies/util.js +352 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +493 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource.js +480 -0
- package/dist/node_modules/undici/lib/web/eventsource/util.js +37 -0
- package/dist/node_modules/undici/lib/web/fetch/LICENSE +21 -0
- package/dist/node_modules/undici/lib/web/fetch/body.js +529 -0
- package/dist/node_modules/undici/lib/web/fetch/constants.js +124 -0
- package/dist/node_modules/undici/lib/web/fetch/data-url.js +744 -0
- package/dist/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
- package/dist/node_modules/undici/lib/web/fetch/file.js +126 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +474 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata.js +252 -0
- package/dist/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/dist/node_modules/undici/lib/web/fetch/headers.js +687 -0
- package/dist/node_modules/undici/lib/web/fetch/index.js +2272 -0
- package/dist/node_modules/undici/lib/web/fetch/request.js +1037 -0
- package/dist/node_modules/undici/lib/web/fetch/response.js +610 -0
- package/dist/node_modules/undici/lib/web/fetch/symbols.js +9 -0
- package/dist/node_modules/undici/lib/web/fetch/util.js +1632 -0
- package/dist/node_modules/undici/lib/web/fetch/webidl.js +695 -0
- package/dist/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
- package/dist/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
- package/dist/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
- package/dist/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
- package/dist/node_modules/undici/lib/web/fileapi/util.js +391 -0
- package/dist/node_modules/undici/lib/web/websocket/connection.js +371 -0
- package/dist/node_modules/undici/lib/web/websocket/constants.js +66 -0
- package/dist/node_modules/undici/lib/web/websocket/events.js +329 -0
- package/dist/node_modules/undici/lib/web/websocket/frame.js +96 -0
- package/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +105 -0
- package/dist/node_modules/undici/lib/web/websocket/receiver.js +513 -0
- package/dist/node_modules/undici/lib/web/websocket/sender.js +104 -0
- package/dist/node_modules/undici/lib/web/websocket/symbols.js +12 -0
- package/dist/node_modules/undici/lib/web/websocket/util.js +322 -0
- package/dist/node_modules/undici/lib/web/websocket/websocket.js +595 -0
- package/dist/node_modules/undici/package.json +160 -0
- package/dist/node_modules/undici/scripts/strip-comments.js +8 -0
- package/dist/node_modules/which/LICENSE +15 -0
- package/dist/node_modules/which/bin/which.js +52 -0
- package/dist/node_modules/which/lib/index.js +111 -0
- package/dist/node_modules/which/package.json +52 -0
- package/dist/node_modules/yallist/dist/commonjs/index.js +384 -0
- package/dist/node_modules/yallist/dist/commonjs/package.json +3 -0
- package/dist/node_modules/yallist/dist/esm/index.js +379 -0
- package/dist/node_modules/yallist/dist/esm/package.json +3 -0
- package/dist/node_modules/yallist/package.json +68 -0
- package/install.js +205 -0
- package/native-binary.mjs +192 -0
- package/package.json +70 -0
- package/pn +70 -0
- package/pnpm +90 -0
- package/pnpx +70 -0
- package/pnx +70 -0
package/README.md
ADDED
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
[简体中文](https://pnpm.io/zh/) |
|
|
2
|
+
[日本語](https://pnpm.io/ja/) |
|
|
3
|
+
[한국어](https://pnpm.io/ko/) |
|
|
4
|
+
[Italiano](https://pnpm.io/it/) |
|
|
5
|
+
[Português Brasileiro](https://pnpm.io/pt/)
|
|
6
|
+
|
|
7
|
+
<picture>
|
|
8
|
+
<source media="(prefers-color-scheme: light)" srcset="https://i.imgur.com/qlW1eEG.png">
|
|
9
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://i.imgur.com/qlW1eEG.png">
|
|
10
|
+
<img src="https://i.imgur.com/qlW1eEG.png" alt="pnpm">
|
|
11
|
+
</picture>
|
|
12
|
+
|
|
13
|
+
Fast, disk space efficient package manager:
|
|
14
|
+
|
|
15
|
+
* **Fast.** Up to 2x faster than the alternatives (see [benchmark](#benchmark)).
|
|
16
|
+
* **Efficient.** Files inside `node_modules` are linked from a single content-addressable storage.
|
|
17
|
+
* **[Great for monorepos](https://pnpm.io/workspaces).**
|
|
18
|
+
* **Strict.** A package can access only dependencies that are specified in its `package.json`.
|
|
19
|
+
* **Deterministic.** Has a lockfile called `pnpm-lock.yaml`.
|
|
20
|
+
* **Works as a Node.js version manager.** See [pnpm runtime](https://pnpm.io/11.x/cli/runtime).
|
|
21
|
+
* **Works everywhere.** Supports Windows, Linux, and macOS.
|
|
22
|
+
* **Battle-tested.** Used in production by teams of [all sizes](https://pnpm.io/workspaces#usage-examples) since 2016.
|
|
23
|
+
* [See the full feature comparison with npm and Yarn](https://pnpm.io/feature-comparison).
|
|
24
|
+
|
|
25
|
+
To quote the [Rush](https://rushjs.io/) team:
|
|
26
|
+
|
|
27
|
+
> Microsoft uses pnpm in Rush repos with hundreds of projects and hundreds of PRs per day, and we’ve found it to be very fast and reliable.
|
|
28
|
+
|
|
29
|
+
[](https://github.com/pnpm/pnpm/releases/latest)
|
|
30
|
+
[](https://opencollective.com/pnpm)
|
|
31
|
+
[](https://opencollective.com/pnpm)
|
|
32
|
+
[](https://x.com/intent/follow?screen_name=pnpmjs®ion=follow_link)
|
|
33
|
+
[](https://stand-with-ukraine.pp.ua)
|
|
34
|
+
|
|
35
|
+
<!-- sponsors -->
|
|
36
|
+
|
|
37
|
+
## Platinum Sponsors
|
|
38
|
+
|
|
39
|
+
<table>
|
|
40
|
+
<tbody>
|
|
41
|
+
<tr>
|
|
42
|
+
<td align="center" valign="middle">
|
|
43
|
+
<a href="https://bit.cloud/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/bit.svg" width="80" alt="Bit"></a>
|
|
44
|
+
</td>
|
|
45
|
+
<td align="center" valign="middle">
|
|
46
|
+
<a href="https://openai.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
47
|
+
<picture>
|
|
48
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/openai_dark.svg" />
|
|
49
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/openai_light.svg" />
|
|
50
|
+
<img src="https://pnpm.io/img/users/openai_dark.svg" width="160" alt="OpenAI" />
|
|
51
|
+
</picture>
|
|
52
|
+
</a>
|
|
53
|
+
</td>
|
|
54
|
+
<td align="center" valign="middle">
|
|
55
|
+
<a href="https://notion.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/notion.svg" width="80" alt="Notion"></a>
|
|
56
|
+
</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td align="center" valign="middle">
|
|
60
|
+
<a href="https://coderabbit.ai/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
61
|
+
<picture>
|
|
62
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/coderabbit.svg" />
|
|
63
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/coderabbit_light.svg" />
|
|
64
|
+
<img src="https://pnpm.io/img/users/coderabbit.svg" width="220" alt="CodeRabbit" />
|
|
65
|
+
</picture>
|
|
66
|
+
</a>
|
|
67
|
+
</td>
|
|
68
|
+
</tr>
|
|
69
|
+
</tbody>
|
|
70
|
+
</table>
|
|
71
|
+
|
|
72
|
+
## Gold Sponsors
|
|
73
|
+
|
|
74
|
+
<table>
|
|
75
|
+
<tbody>
|
|
76
|
+
<tr>
|
|
77
|
+
<td align="center" valign="middle">
|
|
78
|
+
<a href="https://sanity.io/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
79
|
+
<picture>
|
|
80
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/sanity.svg" />
|
|
81
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/sanity_light.svg" />
|
|
82
|
+
<img src="https://pnpm.io/img/users/sanity.svg" width="120" alt="Sanity" />
|
|
83
|
+
</picture>
|
|
84
|
+
</a>
|
|
85
|
+
</td>
|
|
86
|
+
<td align="center" valign="middle">
|
|
87
|
+
<a href="https://discord.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
88
|
+
<picture>
|
|
89
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/discord.svg" />
|
|
90
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/discord_light.svg" />
|
|
91
|
+
<img src="https://pnpm.io/img/users/discord.svg" width="220" alt="Discord" />
|
|
92
|
+
</picture>
|
|
93
|
+
</a>
|
|
94
|
+
</td>
|
|
95
|
+
<td align="center" valign="middle">
|
|
96
|
+
<a href="https://vite.dev/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/vitejs.svg" width="42" alt="Vite"></a>
|
|
97
|
+
</td>
|
|
98
|
+
</tr>
|
|
99
|
+
<tr>
|
|
100
|
+
<td align="center" valign="middle">
|
|
101
|
+
<a href="https://serpapi.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
102
|
+
<picture>
|
|
103
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/serpapi_dark.svg" />
|
|
104
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/serpapi_light.svg" />
|
|
105
|
+
<img src="https://pnpm.io/img/users/serpapi_dark.svg" width="160" alt="SerpApi" />
|
|
106
|
+
</picture>
|
|
107
|
+
</a>
|
|
108
|
+
</td>
|
|
109
|
+
<td align="center" valign="middle">
|
|
110
|
+
<a href="https://stackblitz.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
111
|
+
<picture>
|
|
112
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/stackblitz.svg" />
|
|
113
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/stackblitz_light.svg" />
|
|
114
|
+
<img src="https://pnpm.io/img/users/stackblitz.svg" width="190" alt="Stackblitz" />
|
|
115
|
+
</picture>
|
|
116
|
+
</a>
|
|
117
|
+
</td>
|
|
118
|
+
<td align="center" valign="middle">
|
|
119
|
+
<a href="https://workleap.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
120
|
+
<picture>
|
|
121
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/workleap.svg" />
|
|
122
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/workleap_light.svg" />
|
|
123
|
+
<img src="https://pnpm.io/img/users/workleap.svg" width="190" alt="Workleap" />
|
|
124
|
+
</picture>
|
|
125
|
+
</a>
|
|
126
|
+
</td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr>
|
|
129
|
+
<td align="center" valign="middle">
|
|
130
|
+
<a href="https://nx.dev/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
131
|
+
<picture>
|
|
132
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/nx.svg" />
|
|
133
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/nx_light.svg" />
|
|
134
|
+
<img src="https://pnpm.io/img/users/nx.svg" width="50" alt="Nx" />
|
|
135
|
+
</picture>
|
|
136
|
+
</a>
|
|
137
|
+
</td>
|
|
138
|
+
<td align="center" valign="middle">
|
|
139
|
+
<a href="https://latitude.so/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/latitude.svg" width="160" alt="Latitude"></a>
|
|
140
|
+
</td>
|
|
141
|
+
</tr>
|
|
142
|
+
</tbody>
|
|
143
|
+
</table>
|
|
144
|
+
|
|
145
|
+
## Silver Sponsors
|
|
146
|
+
|
|
147
|
+
<table>
|
|
148
|
+
<tbody>
|
|
149
|
+
<tr>
|
|
150
|
+
<td align="center" valign="middle">
|
|
151
|
+
<a href="https://replit.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
152
|
+
<picture>
|
|
153
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/replit.png" />
|
|
154
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/replit_light.png" />
|
|
155
|
+
<img src="https://pnpm.io/img/users/replit.png" width="140" alt="Replit" />
|
|
156
|
+
</picture>
|
|
157
|
+
</a>
|
|
158
|
+
</td>
|
|
159
|
+
<td align="center" valign="middle">
|
|
160
|
+
<a href="https://cybozu.co.jp/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/cybozu.svg" width="70" alt="Cybozu"></a>
|
|
161
|
+
</td>
|
|
162
|
+
<td align="center" valign="middle">
|
|
163
|
+
<a href="https://www.bairesdev.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
164
|
+
<picture>
|
|
165
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/bairesdev.svg" />
|
|
166
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/bairesdev_light.svg" />
|
|
167
|
+
<img src="https://pnpm.io/img/users/bairesdev.svg" width="160" alt="BairesDev" />
|
|
168
|
+
</picture>
|
|
169
|
+
</a>
|
|
170
|
+
</td>
|
|
171
|
+
</tr>
|
|
172
|
+
<tr>
|
|
173
|
+
<td align="center" valign="middle">
|
|
174
|
+
<a href="https://www.thesys.dev/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
175
|
+
<picture>
|
|
176
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/thesys.svg" />
|
|
177
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/thesys_light.svg" />
|
|
178
|
+
<img src="https://pnpm.io/img/users/thesys.svg" width="120" alt="Thesys" />
|
|
179
|
+
</picture>
|
|
180
|
+
</a>
|
|
181
|
+
</td>
|
|
182
|
+
<td align="center" valign="middle">
|
|
183
|
+
<a href="https://devowl.io/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/devowlio.svg" width="100" alt="devowl.io"></a>
|
|
184
|
+
</td>
|
|
185
|
+
<td align="center" valign="middle">
|
|
186
|
+
<a href="https://uscreen.de/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
187
|
+
<picture>
|
|
188
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/uscreen.svg" />
|
|
189
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/uscreen_light.svg" />
|
|
190
|
+
<img src="https://pnpm.io/img/users/uscreen.svg" width="180" alt="u|screen" />
|
|
191
|
+
</picture>
|
|
192
|
+
</a>
|
|
193
|
+
</td>
|
|
194
|
+
</tr>
|
|
195
|
+
<tr>
|
|
196
|
+
<td align="center" valign="middle">
|
|
197
|
+
<a href="https://www.leniolabs.com/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer"><img src="https://pnpm.io/img/users/leniolabs.jpg" width="40" alt="Leniolabs_"></a>
|
|
198
|
+
</td>
|
|
199
|
+
<td align="center" valign="middle">
|
|
200
|
+
<a href="https://depot.dev/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
201
|
+
<picture>
|
|
202
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/depot.svg" />
|
|
203
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/depot_light.svg" />
|
|
204
|
+
<img src="https://pnpm.io/img/users/depot.svg" width="100" alt="Depot" />
|
|
205
|
+
</picture>
|
|
206
|
+
</a>
|
|
207
|
+
</td>
|
|
208
|
+
<td align="center" valign="middle">
|
|
209
|
+
<a href="https://cerbos.dev/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">
|
|
210
|
+
<picture>
|
|
211
|
+
<source media="(prefers-color-scheme: light)" srcset="https://pnpm.io/img/users/cerbos.svg" />
|
|
212
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://pnpm.io/img/users/cerbos_light.svg" />
|
|
213
|
+
<img src="https://pnpm.io/img/users/cerbos.svg" width="90" alt="Cerbos" />
|
|
214
|
+
</picture>
|
|
215
|
+
</a>
|
|
216
|
+
</td>
|
|
217
|
+
</tr>
|
|
218
|
+
<tr>
|
|
219
|
+
<td align="center" valign="middle">
|
|
220
|
+
<a href="https://time.now/?utm_source=pnpm&utm_medium=readme" target="_blank" rel="noopener noreferrer">⏱️ Time.now</a>
|
|
221
|
+
</td>
|
|
222
|
+
</tr>
|
|
223
|
+
</tbody>
|
|
224
|
+
</table>
|
|
225
|
+
|
|
226
|
+
<!-- sponsors end -->
|
|
227
|
+
|
|
228
|
+
Support this project by [becoming a sponsor](https://opencollective.com/pnpm#sponsor).
|
|
229
|
+
|
|
230
|
+
## Background
|
|
231
|
+
|
|
232
|
+
pnpm uses a content-addressable filesystem to store all files from all module directories on a disk.
|
|
233
|
+
When using npm, if you have 100 projects using lodash, you will have 100 copies of lodash on disk.
|
|
234
|
+
With pnpm, lodash will be stored in a content-addressable storage, so:
|
|
235
|
+
|
|
236
|
+
1. If you depend on different versions of lodash, only the files that differ are added to the store.
|
|
237
|
+
If lodash has 100 files, and a new version has a change only in one of those files,
|
|
238
|
+
`pnpm update` will only add 1 new file to the storage.
|
|
239
|
+
1. All the files are saved in a single place on the disk. When packages are installed, their files are linked
|
|
240
|
+
from that single place consuming no additional disk space. Linking is performed using either hard-links or reflinks (copy-on-write).
|
|
241
|
+
|
|
242
|
+
As a result, you save gigabytes of space on your disk and you have a lot faster installations!
|
|
243
|
+
If you'd like more details about the unique `node_modules` structure that pnpm creates and
|
|
244
|
+
why it works fine with the Node.js ecosystem, read this small article: [Flat node_modules is not the only way](https://pnpm.io/blog/2020/05/27/flat-node-modules-is-not-the-only-way).
|
|
245
|
+
|
|
246
|
+
💖 Like this project? Let people know with a [tweet](https://r.pnpm.io/tweet)
|
|
247
|
+
|
|
248
|
+
## Installation
|
|
249
|
+
|
|
250
|
+
For installation options [visit our website](https://pnpm.io/installation).
|
|
251
|
+
|
|
252
|
+
## Usage
|
|
253
|
+
|
|
254
|
+
Just use pnpm in place of npm/Yarn. E.g., install dependencies via:
|
|
255
|
+
|
|
256
|
+
```
|
|
257
|
+
pnpm install
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
For more advanced usage, read [pnpm CLI](https://pnpm.io/pnpm-cli) on our website, or run `pnpm help`.
|
|
261
|
+
|
|
262
|
+
## Benchmark
|
|
263
|
+
|
|
264
|
+
pnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here](https://r.pnpm.io/benchmarks).
|
|
265
|
+
|
|
266
|
+
Benchmarks on an app with lots of dependencies:
|
|
267
|
+
|
|
268
|
+

|
|
269
|
+
|
|
270
|
+
## Support
|
|
271
|
+
|
|
272
|
+
- [Frequently Asked Questions](https://pnpm.io/faq)
|
|
273
|
+
- [X](https://x.com/pnpmjs)
|
|
274
|
+
- [Bluesky](https://bsky.app/profile/pnpm.io)
|
|
275
|
+
- [Discord](https://r.pnpm.io/chat)
|
|
276
|
+
|
|
277
|
+
## License
|
|
278
|
+
|
|
279
|
+
[MIT](https://github.com/pnpm/pnpm/blob/main/LICENSE)
|
|
280
|
+
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Third-Party Notices
|
|
2
|
+
|
|
3
|
+
This product includes software derived from third-party sources. The
|
|
4
|
+
components below, and their license terms, are listed here in satisfaction
|
|
5
|
+
of those terms.
|
|
6
|
+
|
|
7
|
+
## Yarn (`@yarnpkg/nm`, `@yarnpkg/extensions`)
|
|
8
|
+
|
|
9
|
+
- Source: <https://github.com/yarnpkg/berry>
|
|
10
|
+
- License: BSD 2-Clause
|
|
11
|
+
|
|
12
|
+
The `nodeLinker: hoisted` layout is produced by a Rust port of the hoisting
|
|
13
|
+
algorithm in `@yarnpkg/nm`, and the built-in package-compatibility database
|
|
14
|
+
is a copy of the one in `@yarnpkg/extensions`.
|
|
15
|
+
|
|
16
|
+
```text
|
|
17
|
+
BSD 2-Clause License
|
|
18
|
+
|
|
19
|
+
Copyright (c) 2016-present, Yarn Contributors.
|
|
20
|
+
All rights reserved.
|
|
21
|
+
|
|
22
|
+
Redistribution and use in source and binary forms, with or without
|
|
23
|
+
modification, are permitted provided that the following conditions are met:
|
|
24
|
+
|
|
25
|
+
1. Redistributions of source code must retain the above copyright notice, this
|
|
26
|
+
list of conditions and the following disclaimer.
|
|
27
|
+
|
|
28
|
+
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
29
|
+
this list of conditions and the following disclaimer in the documentation
|
|
30
|
+
and/or other materials provided with the distribution.
|
|
31
|
+
|
|
32
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
33
|
+
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
34
|
+
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
35
|
+
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
|
36
|
+
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
37
|
+
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
38
|
+
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
39
|
+
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
40
|
+
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
41
|
+
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
42
|
+
```
|
package/bin/pnpm.mjs
ADDED
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Corepack's entry point into pnpm. Corepack hardcodes `./bin/pnpm.mjs` and
|
|
3
|
+
// `./bin/pnpx.mjs` for every pnpm >=11 (see its `config.json`) and loads them
|
|
4
|
+
// into its own Node.js process, which a native executable cannot be loaded into.
|
|
5
|
+
//
|
|
6
|
+
// The `pnpm` placeholder bin runs it too, on Unix, when the install script that
|
|
7
|
+
// replaces it with the native binary did not (build scripts blocked). An
|
|
8
|
+
// ordinary `npm install -g pnpm` never pays for a Node.js startup:
|
|
9
|
+
// `package.json#bin` points at the native binary.
|
|
10
|
+
//
|
|
11
|
+
// Corepack installs no dependencies and runs no lifecycle scripts, so the
|
|
12
|
+
// `@pnpm/exe.<target>` package that carries the binary is absent and
|
|
13
|
+
// `install.js` never ran. The binary is therefore downloaded on first use and
|
|
14
|
+
// kept next to this wrapper — where the native binary also finds the `dist/`
|
|
15
|
+
// payload it ships node-gyp in. The placeholder's installs usually do carry
|
|
16
|
+
// that package, and the binary is taken from there.
|
|
17
|
+
//
|
|
18
|
+
// The download itself is `get-pnpm`, the package behind https://get.pnpm.io,
|
|
19
|
+
// which already knows how to verify one; it travels in that same `dist/`
|
|
20
|
+
// payload. What is left here is Corepack's environment, which it does not know:
|
|
21
|
+
// where to download from, what credentials to use, and whose signature to trust.
|
|
22
|
+
import { Buffer } from 'node:buffer'
|
|
23
|
+
import { spawnSync } from 'node:child_process'
|
|
24
|
+
import console from 'node:console'
|
|
25
|
+
import fs from 'node:fs'
|
|
26
|
+
import os from 'node:os'
|
|
27
|
+
import path from 'node:path'
|
|
28
|
+
import process from 'node:process'
|
|
29
|
+
import { URL } from 'node:url'
|
|
30
|
+
import { readWrapperManifest, resolveInstalledBinary, wrapperDir } from '../native-binary.mjs'
|
|
31
|
+
|
|
32
|
+
// Deliberately not the `pnpm` placeholder that `install.js` overwrites: a name
|
|
33
|
+
// of its own is what tells a downloaded binary apart from the placeholder.
|
|
34
|
+
const DOWNLOADED_BINARY = path.join(
|
|
35
|
+
wrapperDir,
|
|
36
|
+
process.platform === 'win32' ? 'pnpm-native.exe' : 'pnpm-native'
|
|
37
|
+
)
|
|
38
|
+
const GET_PNPM = new URL('../dist/node_modules/get-pnpm/lib/index.js', import.meta.url)
|
|
39
|
+
const DEFAULT_REGISTRY = 'https://registry.npmjs.org'
|
|
40
|
+
|
|
41
|
+
run(await nativeBinary())
|
|
42
|
+
|
|
43
|
+
function run (binary) {
|
|
44
|
+
// Ctrl-C reaches the whole foreground process group, so the binary gets its
|
|
45
|
+
// own SIGINT; exiting here first would hand the terminal back while it is
|
|
46
|
+
// still shutting down.
|
|
47
|
+
process.on('SIGINT', () => {})
|
|
48
|
+
|
|
49
|
+
const result = spawnSync(binary, process.argv.slice(2), { stdio: 'inherit' })
|
|
50
|
+
if (result.error != null) {
|
|
51
|
+
fail(`Could not run the pnpm binary at ${binary}: ${result.error.message}`)
|
|
52
|
+
}
|
|
53
|
+
process.exitCode = result.signal == null
|
|
54
|
+
? result.status ?? 1
|
|
55
|
+
: 128 + (os.constants.signals[result.signal] ?? 0)
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
async function nativeBinary () {
|
|
59
|
+
const installed = resolveInstalledBinary()
|
|
60
|
+
if (installed != null) {
|
|
61
|
+
return installed
|
|
62
|
+
}
|
|
63
|
+
// A plain file, not merely something at that path: what a previous run left
|
|
64
|
+
// is a file, and a directory there would be spawned as if it were a binary.
|
|
65
|
+
if (fs.lstatSync(DOWNLOADED_BINARY, { throwIfNoEntry: false })?.isFile() === true) {
|
|
66
|
+
return DOWNLOADED_BINARY
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if (process.env.COREPACK_ENABLE_NETWORK === '0') {
|
|
70
|
+
fail('Network access is disabled by the environment, so the pnpm binary cannot be downloaded.')
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
const { version } = readWrapperManifest()
|
|
74
|
+
console.error(`Downloading the pnpm ${version} binary for ${process.platform}-${process.arch}...`)
|
|
75
|
+
const { downloadPnpmExecutable } = await import(GET_PNPM).catch((err) => {
|
|
76
|
+
fail(`This copy of the pnpm package is missing the downloader it needs: ${err.message}`)
|
|
77
|
+
})
|
|
78
|
+
try {
|
|
79
|
+
await downloadPnpmExecutable({
|
|
80
|
+
version,
|
|
81
|
+
registry: process.env.COREPACK_NPM_REGISTRY || DEFAULT_REGISTRY,
|
|
82
|
+
destPath: DOWNLOADED_BINARY,
|
|
83
|
+
headers: registryHeaders(),
|
|
84
|
+
...signaturePolicy(),
|
|
85
|
+
})
|
|
86
|
+
} catch (err) {
|
|
87
|
+
fail(`Could not download the pnpm ${version} binary: ${err.message}`)
|
|
88
|
+
}
|
|
89
|
+
return DOWNLOADED_BINARY
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Credentials for the registry, read the way Corepack reads its own. `get-pnpm`
|
|
94
|
+
* keeps them on that registry's origin, so a download host it names never
|
|
95
|
+
* receives them.
|
|
96
|
+
*/
|
|
97
|
+
function registryHeaders () {
|
|
98
|
+
const { COREPACK_NPM_TOKEN, COREPACK_NPM_USERNAME, COREPACK_NPM_PASSWORD } = process.env
|
|
99
|
+
if (COREPACK_NPM_TOKEN) {
|
|
100
|
+
return { authorization: `Bearer ${COREPACK_NPM_TOKEN}` }
|
|
101
|
+
}
|
|
102
|
+
if (COREPACK_NPM_USERNAME && COREPACK_NPM_PASSWORD) {
|
|
103
|
+
const credentials = Buffer.from(`${COREPACK_NPM_USERNAME}:${COREPACK_NPM_PASSWORD}`, 'utf8')
|
|
104
|
+
return { authorization: `Basic ${credentials.toString('base64')}` }
|
|
105
|
+
}
|
|
106
|
+
return undefined
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Whose signature over the download to trust, following `COREPACK_INTEGRITY_KEYS`
|
|
111
|
+
* exactly as Corepack does: npm's own keys when it is unset, the keys it names
|
|
112
|
+
* when it holds a key set, and no signature check at all when it is `0` or
|
|
113
|
+
* empty — which is the state a registry that re-publishes packages, and
|
|
114
|
+
* therefore carries no npm signatures, already has to be in for Corepack to
|
|
115
|
+
* have installed this wrapper from it.
|
|
116
|
+
*/
|
|
117
|
+
function signaturePolicy () {
|
|
118
|
+
const configured = process.env.COREPACK_INTEGRITY_KEYS
|
|
119
|
+
if (configured == null) {
|
|
120
|
+
return {}
|
|
121
|
+
}
|
|
122
|
+
if (configured === '' || configured === '0') {
|
|
123
|
+
return { verifySignature: false }
|
|
124
|
+
}
|
|
125
|
+
let keys
|
|
126
|
+
try {
|
|
127
|
+
keys = JSON.parse(configured).npm
|
|
128
|
+
} catch (err) {
|
|
129
|
+
fail(`COREPACK_INTEGRITY_KEYS is not readable as JSON: ${err.message}`)
|
|
130
|
+
}
|
|
131
|
+
// An absent or malformed `npm` entry would otherwise be passed on as no keys
|
|
132
|
+
// at all, which falls back to npm's own — the opposite of what setting the
|
|
133
|
+
// variable asked for. An empty set is left alone: it names no key to trust,
|
|
134
|
+
// and Corepack reads it the same way, so every download is refused.
|
|
135
|
+
if (!Array.isArray(keys)) {
|
|
136
|
+
fail('COREPACK_INTEGRITY_KEYS holds no "npm" key set to verify the pnpm binary against.')
|
|
137
|
+
}
|
|
138
|
+
return { keys }
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
function fail (message) {
|
|
142
|
+
console.error(message)
|
|
143
|
+
process.exit(1)
|
|
144
|
+
}
|
package/bin/pnpx.mjs
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// Corepack's `pnpx` entry point; see ./pnpm.mjs. The native binary infers the
|
|
3
|
+
// `dlx` subcommand from the name it was launched under, which does not survive
|
|
4
|
+
// being spawned from here, so inject it the way the `pnpx` shell script does.
|
|
5
|
+
import process from 'node:process'
|
|
6
|
+
|
|
7
|
+
process.argv = [...process.argv.slice(0, 2), 'dlx', ...process.argv.slice(2)]
|
|
8
|
+
|
|
9
|
+
await import('./pnpm.mjs')
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Resolve $0 through symlinks so basedir is the shim's real directory.
|
|
3
|
+
# Cap hops at the kernel's ELOOP limit so a cycle cannot hang the shim.
|
|
4
|
+
#
|
|
5
|
+
# A shim runs with node_modules/.bin at the front of PATH, so readlink, sed,
|
|
6
|
+
# uname, and printf go through `command -p`, which searches the system default
|
|
7
|
+
# path instead. A dependency's bin cannot stand in for one of them and take over
|
|
8
|
+
# the shim before it reaches its target. Directories come from `${link%/*}`,
|
|
9
|
+
# which needs no helper at all.
|
|
10
|
+
#
|
|
11
|
+
# Where no default path is compiled in, as on Nix, `command -p` searches PATH
|
|
12
|
+
# instead, so the helpers run with node_modules and relative entries dropped from
|
|
13
|
+
# PATH.
|
|
14
|
+
caller_path_set=${PATH+set}
|
|
15
|
+
caller_path=${PATH-}
|
|
16
|
+
helper_path=
|
|
17
|
+
rest=$caller_path:
|
|
18
|
+
while [ -n "$rest" ]; do
|
|
19
|
+
dir=${rest%%:*}
|
|
20
|
+
rest=${rest#*:}
|
|
21
|
+
case "$dir" in
|
|
22
|
+
*/node_modules/*|*/node_modules) ;;
|
|
23
|
+
/*) helper_path=${helper_path:+$helper_path:}$dir ;;
|
|
24
|
+
esac
|
|
25
|
+
done
|
|
26
|
+
# An empty PATH searches the current directory.
|
|
27
|
+
PATH=${helper_path:-/}
|
|
28
|
+
link="$0"
|
|
29
|
+
# `${link%/*}` needs a separator to strip. A bare name came from a PATH lookup
|
|
30
|
+
# and stands for a file in the current directory.
|
|
31
|
+
case "$link" in
|
|
32
|
+
*/*|*\\*) ;;
|
|
33
|
+
*) link="./$link" ;;
|
|
34
|
+
esac
|
|
35
|
+
hops=0
|
|
36
|
+
while [ -L "$link" ] && [ "$hops" -lt 40 ]; do
|
|
37
|
+
hops=$((hops+1))
|
|
38
|
+
target=$(command -p readlink "$link")
|
|
39
|
+
case "$target" in
|
|
40
|
+
/*) link="$target" ;;
|
|
41
|
+
*) link="${link%/*}/$target" ;;
|
|
42
|
+
esac
|
|
43
|
+
done
|
|
44
|
+
basedir=$(command -p printf '%s\n' "$link" | command -p sed -e 's,\\,/,g')
|
|
45
|
+
basedir="${basedir%/*}"
|
|
46
|
+
basedir_win="$basedir"
|
|
47
|
+
exe=""
|
|
48
|
+
msys=""
|
|
49
|
+
|
|
50
|
+
case `command -p uname -a` in
|
|
51
|
+
*CYGWIN*|*MINGW*|*MSYS*)
|
|
52
|
+
if converted=$(command -p cygpath -w "$basedir" 2>/dev/null) && [ -n "$converted" ]; then
|
|
53
|
+
basedir_win="$converted"
|
|
54
|
+
elif command -v cygpath > /dev/null 2>&1; then
|
|
55
|
+
basedir_win=`cygpath -w "$basedir"`
|
|
56
|
+
fi
|
|
57
|
+
exe=".exe"
|
|
58
|
+
msys="true"
|
|
59
|
+
;;
|
|
60
|
+
*WSL2*)
|
|
61
|
+
if converted=$(command -p wslpath -w "$basedir" 2>/dev/null) && [ -n "$converted" ]; then
|
|
62
|
+
basedir_win="$converted"
|
|
63
|
+
exe=".exe"
|
|
64
|
+
elif command -v wslpath > /dev/null 2>&1; then
|
|
65
|
+
basedir_win="$(wslpath -w "$basedir" 2> /dev/null)"
|
|
66
|
+
if [ $? -ne 0 ] || [ -z "$basedir_win" ]; then
|
|
67
|
+
basedir_win="$basedir"
|
|
68
|
+
else
|
|
69
|
+
exe=".exe"
|
|
70
|
+
fi
|
|
71
|
+
fi
|
|
72
|
+
;;
|
|
73
|
+
esac
|
|
74
|
+
if [ -n "$caller_path_set" ]; then PATH=$caller_path; else unset PATH; fi
|
|
75
|
+
|
|
76
|
+
basedir_abs=$(CDPATH= cd -P -- "$basedir" && pwd -P) || exit $?
|
|
77
|
+
if [ -n "$exe" ] && [ -x "$basedir/node.exe" ]; then
|
|
78
|
+
exec "$basedir/node.exe" "$basedir_win/../get-pnpm/bin/get-pnpm.js" "$@"
|
|
79
|
+
elif [ -x "$basedir/node" ]; then
|
|
80
|
+
exec "$basedir/node" "$basedir_abs/../get-pnpm/bin/get-pnpm.js" "$@"
|
|
81
|
+
elif command -v node >/dev/null 2>&1; then
|
|
82
|
+
exec node "$basedir_abs/../get-pnpm/bin/get-pnpm.js" "$@"
|
|
83
|
+
elif [ -n "$exe" ] && command -v node.exe >/dev/null 2>&1; then
|
|
84
|
+
exec node.exe "$basedir_win/../get-pnpm/bin/get-pnpm.js" "$@"
|
|
85
|
+
else
|
|
86
|
+
exec node "$basedir_abs/../get-pnpm/bin/get-pnpm.js" "$@"
|
|
87
|
+
fi
|
|
88
|
+
# cmd-shim-target=../get-pnpm/bin/get-pnpm.js
|