pnpm 6.24.1 → 6.24.2
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/dist/pnpm.cjs +75 -76
- package/package.json +18 -17
package/dist/pnpm.cjs
CHANGED
|
@@ -3167,7 +3167,7 @@ var require_lib4 = __commonJS({
|
|
|
3167
3167
|
var load_json_file_1 = __importDefault(require_load_json_file());
|
|
3168
3168
|
var defaultManifest = {
|
|
3169
3169
|
name: "pnpm" != null && true ? "pnpm" : "pnpm",
|
|
3170
|
-
version: "6.24.
|
|
3170
|
+
version: "6.24.2" != null && true ? "6.24.2" : "0.0.0"
|
|
3171
3171
|
};
|
|
3172
3172
|
var pkgJson;
|
|
3173
3173
|
if (require.main == null) {
|
|
@@ -33637,7 +33637,7 @@ var require_lib17 = __commonJS({
|
|
|
33637
33637
|
}
|
|
33638
33638
|
exports2.default = default_1;
|
|
33639
33639
|
function formatNameAndRange(name, range) {
|
|
33640
|
-
if (range.includes(" ")) {
|
|
33640
|
+
if (range.includes(" ") || range === "*") {
|
|
33641
33641
|
return `${name}@"${range}"`;
|
|
33642
33642
|
}
|
|
33643
33643
|
return `${name}@${range}`;
|
|
@@ -83895,7 +83895,6 @@ var require_node3 = __commonJS({
|
|
|
83895
83895
|
exports2.getNodeDir = getNodeDir;
|
|
83896
83896
|
async function installNode(fetch, wantedNodeVersion, versionDir, opts) {
|
|
83897
83897
|
var _a;
|
|
83898
|
-
await fs_1.default.promises.mkdir(versionDir, { recursive: true });
|
|
83899
83898
|
const nodeMirror = (0, getNodeMirror_1.default)(opts.rawConfig, (_a = opts.releaseDir) !== null && _a !== void 0 ? _a : "release");
|
|
83900
83899
|
const { tarball, pkgName } = getNodeJSTarball(wantedNodeVersion, nodeMirror);
|
|
83901
83900
|
if (tarball.endsWith(".zip")) {
|
|
@@ -113293,6 +113292,74 @@ var require_resolveDependencyTree = __commonJS({
|
|
|
113293
113292
|
}
|
|
113294
113293
|
});
|
|
113295
113294
|
|
|
113295
|
+
// ../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/semverUtils.js
|
|
113296
|
+
var require_semverUtils = __commonJS({
|
|
113297
|
+
"../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/semverUtils.js"(exports2) {
|
|
113298
|
+
"use strict";
|
|
113299
|
+
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
113300
|
+
exports2.validRange = exports2.satisfiesWithPrereleases = exports2.SemVer = void 0;
|
|
113301
|
+
var tslib_12 = require_tslib();
|
|
113302
|
+
var semver_12 = (0, tslib_12.__importDefault)(require_semver2());
|
|
113303
|
+
var semver_2 = require_semver2();
|
|
113304
|
+
Object.defineProperty(exports2, "SemVer", { enumerable: true, get: function() {
|
|
113305
|
+
return semver_2.SemVer;
|
|
113306
|
+
} });
|
|
113307
|
+
var satisfiesWithPrereleasesCache = new Map();
|
|
113308
|
+
function satisfiesWithPrereleases(version, range, loose = false) {
|
|
113309
|
+
if (!version)
|
|
113310
|
+
return false;
|
|
113311
|
+
const key = `${range}${loose}`;
|
|
113312
|
+
let semverRange = satisfiesWithPrereleasesCache.get(key);
|
|
113313
|
+
if (typeof semverRange === `undefined`) {
|
|
113314
|
+
try {
|
|
113315
|
+
semverRange = new semver_12.default.Range(range, { includePrerelease: true, loose });
|
|
113316
|
+
} catch {
|
|
113317
|
+
return false;
|
|
113318
|
+
} finally {
|
|
113319
|
+
satisfiesWithPrereleasesCache.set(key, semverRange || null);
|
|
113320
|
+
}
|
|
113321
|
+
} else if (semverRange === null) {
|
|
113322
|
+
return false;
|
|
113323
|
+
}
|
|
113324
|
+
let semverVersion;
|
|
113325
|
+
try {
|
|
113326
|
+
semverVersion = new semver_12.default.SemVer(version, semverRange);
|
|
113327
|
+
} catch (err) {
|
|
113328
|
+
return false;
|
|
113329
|
+
}
|
|
113330
|
+
if (semverRange.test(semverVersion))
|
|
113331
|
+
return true;
|
|
113332
|
+
if (semverVersion.prerelease)
|
|
113333
|
+
semverVersion.prerelease = [];
|
|
113334
|
+
return semverRange.set.some((comparatorSet) => {
|
|
113335
|
+
for (const comparator of comparatorSet)
|
|
113336
|
+
if (comparator.semver.prerelease)
|
|
113337
|
+
comparator.semver.prerelease = [];
|
|
113338
|
+
return comparatorSet.every((comparator) => {
|
|
113339
|
+
return comparator.test(semverVersion);
|
|
113340
|
+
});
|
|
113341
|
+
});
|
|
113342
|
+
}
|
|
113343
|
+
exports2.satisfiesWithPrereleases = satisfiesWithPrereleases;
|
|
113344
|
+
var rangesCache = new Map();
|
|
113345
|
+
function validRange(potentialRange) {
|
|
113346
|
+
if (potentialRange.indexOf(`:`) !== -1)
|
|
113347
|
+
return null;
|
|
113348
|
+
let range = rangesCache.get(potentialRange);
|
|
113349
|
+
if (typeof range !== `undefined`)
|
|
113350
|
+
return range;
|
|
113351
|
+
try {
|
|
113352
|
+
range = new semver_12.default.Range(potentialRange);
|
|
113353
|
+
} catch {
|
|
113354
|
+
range = null;
|
|
113355
|
+
}
|
|
113356
|
+
rangesCache.set(potentialRange, range);
|
|
113357
|
+
return range;
|
|
113358
|
+
}
|
|
113359
|
+
exports2.validRange = validRange;
|
|
113360
|
+
}
|
|
113361
|
+
});
|
|
113362
|
+
|
|
113296
113363
|
// ../../node_modules/.pnpm/ramda@0.27.1/node_modules/ramda/src/scan.js
|
|
113297
113364
|
var require_scan4 = __commonJS({
|
|
113298
113365
|
"../../node_modules/.pnpm/ramda@0.27.1/node_modules/ramda/src/scan.js"(exports2, module2) {
|
|
@@ -113841,12 +113908,12 @@ var require_resolvePeers = __commonJS({
|
|
|
113841
113908
|
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
113842
113909
|
var crypto_1 = __importDefault(require("crypto"));
|
|
113843
113910
|
var path_1 = __importDefault(require("path"));
|
|
113911
|
+
var semverUtils_1 = require_semverUtils();
|
|
113844
113912
|
var dependency_path_1 = require_lib35();
|
|
113845
113913
|
var fromPairs_1 = __importDefault(require_fromPairs());
|
|
113846
113914
|
var isEmpty_1 = __importDefault(require_isEmpty2());
|
|
113847
113915
|
var pick_1 = __importDefault(require_pick());
|
|
113848
113916
|
var scan_1 = __importDefault(require_scan4());
|
|
113849
|
-
var semver_12 = __importDefault(require_semver2());
|
|
113850
113917
|
var mergePeers_1 = require_mergePeers();
|
|
113851
113918
|
var nodeIdUtils_1 = require_nodeIdUtils();
|
|
113852
113919
|
function default_1(opts) {
|
|
@@ -114083,7 +114150,7 @@ var require_resolvePeers = __commonJS({
|
|
|
114083
114150
|
});
|
|
114084
114151
|
continue;
|
|
114085
114152
|
}
|
|
114086
|
-
if (!
|
|
114153
|
+
if (!(0, semverUtils_1.satisfiesWithPrereleases)(resolved.version, peerVersionRange, true)) {
|
|
114087
114154
|
const location = getLocationFromNodeId({
|
|
114088
114155
|
dependenciesTree: ctx.dependenciesTree,
|
|
114089
114156
|
nodeId: ctx.nodeId,
|
|
@@ -118140,7 +118207,7 @@ var require_recursive2 = __commonJS({
|
|
|
118140
118207
|
rootDir: opts.workspaceDir
|
|
118141
118208
|
});
|
|
118142
118209
|
}
|
|
118143
|
-
if (mutatedImporters.length === 0 && cmdFullName === "update") {
|
|
118210
|
+
if (mutatedImporters.length === 0 && cmdFullName === "update" && opts.depth === 0) {
|
|
118144
118211
|
throw new error_1.default("NO_PACKAGE_IN_DEPENDENCIES", "None of the specified packages were found in the dependencies of any of the projects.");
|
|
118145
118212
|
}
|
|
118146
118213
|
const mutatedPkgs = await (0, core_1.mutateModules)(mutatedImporters, {
|
|
@@ -118250,7 +118317,7 @@ var require_recursive2 = __commonJS({
|
|
|
118250
118317
|
}, []);
|
|
118251
118318
|
}
|
|
118252
118319
|
throwOnFail(result2);
|
|
118253
|
-
if (!result2.passes && cmdFullName === "update") {
|
|
118320
|
+
if (!result2.passes && cmdFullName === "update" && opts.depth === 0) {
|
|
118254
118321
|
throw new error_1.default("NO_PACKAGE_IN_DEPENDENCIES", "None of the specified packages were found in the dependencies of any of the projects.");
|
|
118255
118322
|
}
|
|
118256
118323
|
return true;
|
|
@@ -118488,7 +118555,7 @@ var require_installDeps = __commonJS({
|
|
|
118488
118555
|
const updateMatch = opts.update && params.length > 0 ? (0, recursive_1.createMatcher)(params) : null;
|
|
118489
118556
|
if (updateMatch != null) {
|
|
118490
118557
|
params = (0, recursive_1.matchDependencies)(updateMatch, manifest, includeDirect);
|
|
118491
|
-
if (params.length === 0) {
|
|
118558
|
+
if (params.length === 0 && opts.depth === 0) {
|
|
118492
118559
|
throw new error_1.default("NO_PACKAGE_IN_DEPENDENCIES", "None of the specified packages were found in the dependencies.");
|
|
118493
118560
|
}
|
|
118494
118561
|
}
|
|
@@ -151386,74 +151453,6 @@ var require_WorkspaceResolver = __commonJS({
|
|
|
151386
151453
|
}
|
|
151387
151454
|
});
|
|
151388
151455
|
|
|
151389
|
-
// ../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/semverUtils.js
|
|
151390
|
-
var require_semverUtils = __commonJS({
|
|
151391
|
-
"../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/semverUtils.js"(exports2) {
|
|
151392
|
-
"use strict";
|
|
151393
|
-
Object.defineProperty(exports2, "__esModule", { value: true });
|
|
151394
|
-
exports2.validRange = exports2.satisfiesWithPrereleases = exports2.SemVer = void 0;
|
|
151395
|
-
var tslib_12 = require_tslib();
|
|
151396
|
-
var semver_12 = (0, tslib_12.__importDefault)(require_semver2());
|
|
151397
|
-
var semver_2 = require_semver2();
|
|
151398
|
-
Object.defineProperty(exports2, "SemVer", { enumerable: true, get: function() {
|
|
151399
|
-
return semver_2.SemVer;
|
|
151400
|
-
} });
|
|
151401
|
-
var satisfiesWithPrereleasesCache = new Map();
|
|
151402
|
-
function satisfiesWithPrereleases(version, range, loose = false) {
|
|
151403
|
-
if (!version)
|
|
151404
|
-
return false;
|
|
151405
|
-
const key = `${range}${loose}`;
|
|
151406
|
-
let semverRange = satisfiesWithPrereleasesCache.get(key);
|
|
151407
|
-
if (typeof semverRange === `undefined`) {
|
|
151408
|
-
try {
|
|
151409
|
-
semverRange = new semver_12.default.Range(range, { includePrerelease: true, loose });
|
|
151410
|
-
} catch {
|
|
151411
|
-
return false;
|
|
151412
|
-
} finally {
|
|
151413
|
-
satisfiesWithPrereleasesCache.set(key, semverRange || null);
|
|
151414
|
-
}
|
|
151415
|
-
} else if (semverRange === null) {
|
|
151416
|
-
return false;
|
|
151417
|
-
}
|
|
151418
|
-
let semverVersion;
|
|
151419
|
-
try {
|
|
151420
|
-
semverVersion = new semver_12.default.SemVer(version, semverRange);
|
|
151421
|
-
} catch (err) {
|
|
151422
|
-
return false;
|
|
151423
|
-
}
|
|
151424
|
-
if (semverRange.test(semverVersion))
|
|
151425
|
-
return true;
|
|
151426
|
-
if (semverVersion.prerelease)
|
|
151427
|
-
semverVersion.prerelease = [];
|
|
151428
|
-
return semverRange.set.some((comparatorSet) => {
|
|
151429
|
-
for (const comparator of comparatorSet)
|
|
151430
|
-
if (comparator.semver.prerelease)
|
|
151431
|
-
comparator.semver.prerelease = [];
|
|
151432
|
-
return comparatorSet.every((comparator) => {
|
|
151433
|
-
return comparator.test(semverVersion);
|
|
151434
|
-
});
|
|
151435
|
-
});
|
|
151436
|
-
}
|
|
151437
|
-
exports2.satisfiesWithPrereleases = satisfiesWithPrereleases;
|
|
151438
|
-
var rangesCache = new Map();
|
|
151439
|
-
function validRange(potentialRange) {
|
|
151440
|
-
if (potentialRange.indexOf(`:`) !== -1)
|
|
151441
|
-
return null;
|
|
151442
|
-
let range = rangesCache.get(potentialRange);
|
|
151443
|
-
if (typeof range !== `undefined`)
|
|
151444
|
-
return range;
|
|
151445
|
-
try {
|
|
151446
|
-
range = new semver_12.default.Range(potentialRange);
|
|
151447
|
-
} catch {
|
|
151448
|
-
range = null;
|
|
151449
|
-
}
|
|
151450
|
-
rangesCache.set(potentialRange, range);
|
|
151451
|
-
return range;
|
|
151452
|
-
}
|
|
151453
|
-
exports2.validRange = validRange;
|
|
151454
|
-
}
|
|
151455
|
-
});
|
|
151456
|
-
|
|
151457
151456
|
// ../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/Manifest.js
|
|
151458
151457
|
var require_Manifest = __commonJS({
|
|
151459
151458
|
"../../node_modules/.pnpm/@yarnpkg+core@3.2.0-rc.8/node_modules/@yarnpkg/core/lib/Manifest.js"(exports2) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "pnpm",
|
|
3
3
|
"description": "Fast, disk space efficient package manager",
|
|
4
|
-
"version": "6.24.
|
|
4
|
+
"version": "6.24.2",
|
|
5
5
|
"bin": {
|
|
6
6
|
"pnpm": "bin/pnpm.cjs",
|
|
7
7
|
"pnpx": "bin/pnpx.cjs"
|
|
@@ -22,35 +22,35 @@
|
|
|
22
22
|
"@pnpm/assert-project": "workspace:*",
|
|
23
23
|
"@pnpm/byline": "^1.0.0",
|
|
24
24
|
"@pnpm/cli-meta": "workspace:2.0.0",
|
|
25
|
-
"@pnpm/cli-utils": "workspace:0.6.
|
|
25
|
+
"@pnpm/cli-utils": "workspace:0.6.39",
|
|
26
26
|
"@pnpm/client": "workspace:6.0.10",
|
|
27
27
|
"@pnpm/command": "workspace:2.0.0",
|
|
28
28
|
"@pnpm/common-cli-options-help": "workspace:0.8.0",
|
|
29
29
|
"@pnpm/config": "workspace:13.7.1",
|
|
30
30
|
"@pnpm/constants": "workspace:5.0.0",
|
|
31
31
|
"@pnpm/core-loggers": "workspace:6.1.1",
|
|
32
|
-
"@pnpm/default-reporter": "workspace:8.5.
|
|
32
|
+
"@pnpm/default-reporter": "workspace:8.5.2",
|
|
33
33
|
"@pnpm/file-reporter": "workspace:2.0.0",
|
|
34
|
-
"@pnpm/filter-workspace-packages": "workspace:4.4.
|
|
34
|
+
"@pnpm/filter-workspace-packages": "workspace:4.4.11",
|
|
35
35
|
"@pnpm/find-workspace-dir": "workspace:3.0.1",
|
|
36
|
-
"@pnpm/find-workspace-packages": "workspace:3.1.
|
|
36
|
+
"@pnpm/find-workspace-packages": "workspace:3.1.31",
|
|
37
37
|
"@pnpm/lockfile-types": "workspace:3.1.3",
|
|
38
38
|
"@pnpm/logger": "^4.0.0",
|
|
39
39
|
"@pnpm/modules-yaml": "workspace:9.0.8",
|
|
40
40
|
"@pnpm/nopt": "^0.2.1",
|
|
41
41
|
"@pnpm/parse-cli-args": "workspace:4.3.0",
|
|
42
42
|
"@pnpm/pick-registry-for-package": "workspace:2.0.8",
|
|
43
|
-
"@pnpm/plugin-commands-audit": "workspace:5.1.
|
|
44
|
-
"@pnpm/plugin-commands-env": "workspace:1.
|
|
45
|
-
"@pnpm/plugin-commands-installation": "workspace:8.0.
|
|
46
|
-
"@pnpm/plugin-commands-listing": "workspace:4.0.
|
|
47
|
-
"@pnpm/plugin-commands-outdated": "workspace:5.0.
|
|
48
|
-
"@pnpm/plugin-commands-publishing": "workspace:4.2.
|
|
49
|
-
"@pnpm/plugin-commands-rebuild": "workspace:5.3.
|
|
50
|
-
"@pnpm/plugin-commands-script-runners": "workspace:4.5.
|
|
51
|
-
"@pnpm/plugin-commands-server": "workspace:3.0.
|
|
52
|
-
"@pnpm/plugin-commands-setup": "workspace:1.1.
|
|
53
|
-
"@pnpm/plugin-commands-store": "workspace:4.0.
|
|
43
|
+
"@pnpm/plugin-commands-audit": "workspace:5.1.29",
|
|
44
|
+
"@pnpm/plugin-commands-env": "workspace:1.4.0",
|
|
45
|
+
"@pnpm/plugin-commands-installation": "workspace:8.0.5",
|
|
46
|
+
"@pnpm/plugin-commands-listing": "workspace:4.0.30",
|
|
47
|
+
"@pnpm/plugin-commands-outdated": "workspace:5.0.39",
|
|
48
|
+
"@pnpm/plugin-commands-publishing": "workspace:4.2.36",
|
|
49
|
+
"@pnpm/plugin-commands-rebuild": "workspace:5.3.8",
|
|
50
|
+
"@pnpm/plugin-commands-script-runners": "workspace:4.5.8",
|
|
51
|
+
"@pnpm/plugin-commands-server": "workspace:3.0.56",
|
|
52
|
+
"@pnpm/plugin-commands-setup": "workspace:1.1.24",
|
|
53
|
+
"@pnpm/plugin-commands-store": "workspace:4.0.40",
|
|
54
54
|
"@pnpm/prepare": "workspace:0.0.30",
|
|
55
55
|
"@pnpm/read-package-json": "workspace:5.0.8",
|
|
56
56
|
"@pnpm/read-project-manifest": "workspace:2.0.9",
|
|
@@ -169,5 +169,6 @@
|
|
|
169
169
|
"_test": "cross-env PNPM_REGISTRY_MOCK_PORT=7780 pnpm run test:e2e",
|
|
170
170
|
"test": "pnpm run compile && pnpm run _test",
|
|
171
171
|
"compile": "rimraf lib tsconfig.tsbuildinfo && tsc --build && pnpm run lint -- --fix && rimraf dist bin/nodes && pnpm run bundle && shx cp -r node-gyp-bin dist/node-gyp-bin && shx cp -r node_modules/@pnpm/tabtab/lib/scripts dist/scripts && shx cp -r node_modules/ps-list/vendor dist/vendor && shx cp pnpmrc dist/pnpmrc"
|
|
172
|
-
}
|
|
172
|
+
},
|
|
173
|
+
"readme": "[中文](https://pnpm.io/zh/) | [日本語](https://pnpm.io/ja/) | [Italiano](https://pnpm.io/it/) | [Русский](https://pnpm.io/ru/) | [Türkçe](https://pnpm.io/tr/)\n\n\n\nFast, disk space efficient package manager:\n\n* **Fast.** Up to 2x faster than the alternatives (see [benchmark](#benchmark)).\n* **Efficient.** Files inside `node_modules` are linked from a single content-addressable storage.\n* **[Great for monorepos](https://pnpm.io/workspaces).**\n* **Strict.** A package can access only dependencies that are specified in its `package.json`.\n* **Deterministic.** Has a lockfile called `pnpm-lock.yaml`.\n* **Works as a Node.js version manager.** See [pnpm env use](https://pnpm.io/cli/env).\n* **Works everywhere.** Supports Windows, Linux, and macOS.\n* **Battle-tested.** Used in production by teams of [all sizes](https://pnpm.io/users) since 2016.\n \nTo quote the [Rush](https://rushjs.io/) team:\n\n> 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.\n\n[](https://www.npmjs.com/package/pnpm)\n[](https://r.pnpm.io/chat)\n[](#backers)\n[](#sponsors)\n[](https://twitter.com/intent/follow?screen_name=pnpmjs®ion=follow_link)\n\n## Sponsors\n\n<table>\n <tbody>\n <tr>\n <td align=\"center\" valign=\"middle\">\n <a href=\"https://bit.dev\" target=\"_blank\"><img src=\"https://raw.githubusercontent.com/pnpm/pnpm.github.io/main/static/img/users/bit.svg\" width=\"80\"></a>\n </td>\n <td align=\"center\" valign=\"middle\">\n <a href=\"https://prisma.io\" target=\"_blank\"><img src=\"https://raw.githubusercontent.com/pnpm/pnpm.github.io/main/static/img/users/prisma.svg\" width=\"180\"></a>\n </td>\n <td align=\"center\" valign=\"middle\">\n <a href=\"https://leniolabs.com\" target=\"_blank\"><img src=\"https://raw.githubusercontent.com/pnpm/pnpm.github.io/main/static/img/users/leniolabs.jpg\" width=\"80\"></a>\n </td>\n </tr>\n </tbody>\n</table>\n\nSupport this project by [becoming a sponsor](https://opencollective.com/pnpm#sponsor).\n\n## Background\n\npnpm uses a content-addressable filesystem to store all files from all module directories on a disk.\nWhen using npm or Yarn, if you have 100 projects using lodash, you will have 100 copies of lodash on disk.\nWith pnpm, lodash will be stored in a content-addressable storage, so:\n\n1. If you depend on different versions of lodash, only the files that differ are added to the store.\n If lodash has 100 files, and a new version has a change only in one of those files,\n `pnpm update` will only add 1 new file to the storage.\n1. All the files are saved in a single place on the disk. When packages are installed, their files are linked\n from that single place consuming no additional disk space. Linking is performed using either hard-links or reflinks (copy-on-write).\n\nAs a result, you save gigabytes of space on your disk and you have a lot faster installations!\nIf you'd like more details about the unique `node_modules` structure that pnpm creates and\nwhy 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).\n\n💖 Like this project? Let people know with a [tweet](https://r.pnpm.io/tweet)\n\n## Installation\n\nOn macOS, Linux, or Windows Subsystem for Linux:\n\n```\ncurl -f https://get.pnpm.io/v6.16.js | node - add --global pnpm\n```\n\nOn Windows (using PowerShell):\n\n```\n(Invoke-WebRequest 'https://get.pnpm.io/v6.16.js' -UseBasicParsing).Content | node - add --global pnpm\n```\n\nUsing npm:\n\n```\nnpx pnpm add -g pnpm\n```\n\nFor other installation options [visit our website](https://pnpm.io/installation).\n\nWe also ship a version of pnpm that may be used even with no Node.js installed on the system, see [@pnpm/exe](https://www.npmjs.com/package/@pnpm/exe).\n\n## Usage\n\nJust use pnpm in place of npm/Yarn. E.g., install dependencies via:\n\n```\npnpm install\n```\n\nAlso, `pnpm dlx` instead of npx:\n\n```\npnpm dlx create-react-app my-cool-new-app\n```\n\nFor more advanced usage, read [pnpm CLI](https://pnpm.io/pnpm-cli) on our website, or run `pnpm help`.\n\n## Benchmark\n\npnpm is up to 2x faster than npm and Yarn classic. See all benchmarks [here](https://r.pnpm.io/benchmarks).\n\nBenchmarks on an app with lots of dependencies:\n\n\n\n## Support\n\n- [Frequently Asked Questions](https://pnpm.io/faq)\n- [Chat](https://r.pnpm.io/chat)\n- [Twitter](https://twitter.com/pnpmjs)\n\n## Backers\n\nThank you to all our backers! [Become a backer](https://opencollective.com/pnpm#backer)\n\n<a href=\"https://opencollective.com/pnpm#backers\" target=\"_blank\"><img src=\"https://opencollective.com/pnpm/backers.svg?width=890\"></a>\n\n## Contributors\n\nThis project exists thanks to all the people who contribute. [Contribute](../../blob/main/CONTRIBUTING.md).\n\n<a href=\"../../graphs/contributors\"><img src=\"https://opencollective.com/pnpm/contributors.svg?width=890&button=false\" /></a>\n\n## License\n\n[MIT](https://github.com/pnpm/pnpm/blob/main/LICENSE)\n"
|
|
173
174
|
}
|