mirror of
https://github.com/pnpm/pnpm.git
synced 2026-01-08 15:08:27 -05:00
fix: link own binaries of pkg before running its lifecycle scripts (#3662)
This commit is contained in:
5
.changeset/metal-cars-relate.md
Normal file
5
.changeset/metal-cars-relate.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/build-modules": patch
|
||||
---
|
||||
|
||||
Link own binaries of package before running its lifecycle scripts.
|
||||
@@ -30,7 +30,7 @@
|
||||
"@commitlint/prompt-cli": "^12.1.1",
|
||||
"@pnpm/eslint-config": "workspace:*",
|
||||
"@pnpm/meta-updater": "0.0.6",
|
||||
"@pnpm/registry-mock": "^2.5.0",
|
||||
"@pnpm/registry-mock": "^2.6.0",
|
||||
"@pnpm/tsconfig": "workspace:*",
|
||||
"@types/jest": "^26.0.23",
|
||||
"@types/node": "^14.14.33",
|
||||
|
||||
@@ -198,10 +198,10 @@ export async function linkBinsOfDependencies (
|
||||
|
||||
const binPath = path.join(depNode.dir, 'node_modules/.bin')
|
||||
|
||||
const pkgs = await Promise.all(
|
||||
Object.keys(childrenToLink)
|
||||
.filter((alias) => {
|
||||
const dep = depGraph[childrenToLink[alias]]
|
||||
const pkgNodes = [
|
||||
...Object.entries(childrenToLink)
|
||||
.map(([alias, childDepPath]) => ({ alias, dep: depGraph[childDepPath] }))
|
||||
.filter(({ alias, dep }) => {
|
||||
if (!dep) {
|
||||
// TODO: Try to reproduce this issue with a test in supi
|
||||
logger.debug({ message: `Failed to link bins of "${alias}" to "${binPath}". This is probably not an issue.` })
|
||||
@@ -209,13 +209,14 @@ export async function linkBinsOfDependencies (
|
||||
}
|
||||
return dep.hasBin && dep.installable !== false
|
||||
})
|
||||
.map(async (alias) => {
|
||||
const dep = depGraph[childrenToLink[alias]]
|
||||
return {
|
||||
location: dep.dir,
|
||||
manifest: await dep.fetchingBundledManifest?.() ?? (await readPackageFromDir(dep.dir) as DependencyManifest),
|
||||
}
|
||||
})
|
||||
.map(({ dep }) => dep),
|
||||
depNode,
|
||||
]
|
||||
const pkgs = await Promise.all(pkgNodes
|
||||
.map(async (dep) => ({
|
||||
location: dep.dir,
|
||||
manifest: await dep.fetchingBundledManifest?.() ?? (await readPackageFromDir(dep.dir) as DependencyManifest),
|
||||
}))
|
||||
)
|
||||
|
||||
await linkBinsOfPackages(pkgs, binPath, { warn: opts.warn })
|
||||
|
||||
10
packages/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml
generated
vendored
10
packages/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml
generated
vendored
@@ -10,15 +10,15 @@ dependencies:
|
||||
|
||||
packages:
|
||||
|
||||
/buffer-from/1.1.1:
|
||||
resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==}
|
||||
/buffer-from/1.1.2:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
dev: false
|
||||
|
||||
/concat-stream/1.6.2:
|
||||
resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
|
||||
engines: {'0': node >= 0.8}
|
||||
dependencies:
|
||||
buffer-from: 1.1.1
|
||||
buffer-from: 1.1.2
|
||||
inherits: 2.0.4
|
||||
readable-stream: 2.3.7
|
||||
typedarray: 0.0.6
|
||||
@@ -29,7 +29,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
/hello-world-js-bin/1.0.0:
|
||||
resolution: {integrity: sha512-/ENgcDSnEOz7y99zf3U9IrvQ0WQL+Ddr5Z3nqrrBkr6jaFFu7ujJye0Ne1/4lziovy6UiXMbjVp6vv6P7etKSA==}
|
||||
resolution: {integrity: sha512-g9DaVvwKClJZUDrsYc7DRhvwMuGLzWlKOJlrHWZz5qiT/RdE1jdT+7Fh1T5XNKW7Oa/pbyxHNz7fK1+vLXe/3w==}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
@@ -49,7 +49,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
/pre-and-postinstall-scripts-example/1.0.0:
|
||||
resolution: {integrity: sha512-QMYnPbJobj8I5pAfGqEM+ziAh/z0XognGIesBFQUrGADlyOWF19UfIFLrRP8Ty7vNRzvD8Z5iLxOcda9HleVVQ==}
|
||||
resolution: {integrity: sha512-LiigIO18SIBX0gjNcFRC4nU1L8+Ioysy0NMSZoMIy4fbOm35FxzpDVAcPeFisqbdXPYu166MdlMvla36ySS5qA==}
|
||||
requiresBuild: true
|
||||
dependencies:
|
||||
hello-world-js-bin: 1.0.0
|
||||
|
||||
6
packages/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml
generated
vendored
6
packages/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml
generated
vendored
@@ -9,12 +9,12 @@ dependencies:
|
||||
packages:
|
||||
|
||||
/dep-of-optional-pkg/1.0.0:
|
||||
resolution: {integrity: sha512-tjuG0SSHFpKfpCtJWdc5OHa1N79sigKT7QQPuweVHKljKZivDKbYj7WNasweHROUm99ui+8eX95a5Q90v2mbyQ==}
|
||||
resolution: {integrity: sha512-fsFDBo/KrUZ9ljybu85d3mkr17LoTh3zV9TLncEddZkJ9GD9ql0ZVdftdAlsS46LdfeNKgte/2erZ8euekhWKQ==}
|
||||
dev: false
|
||||
optional: true
|
||||
|
||||
/not-compatible-with-any-os/1.0.0:
|
||||
resolution: {integrity: sha512-nmRtxRbdUBglmxurx7soaPoZXcGW5v5yPgVev4g462E2FaAX2mxGTjgn5oKLYV95h85ZW4HHiil3D0OjzBWnOQ==}
|
||||
resolution: {integrity: sha512-vTrzbhOeYAAhfduz8iCEmTC+512IDxBAaDLl3C6d3S+KOIKhSInhQbaTO3di+h7NND/2YpGUG4WmgGvAhzAcrA==}
|
||||
os: [this-os-does-not-exist]
|
||||
dependencies:
|
||||
dep-of-optional-pkg: 1.0.0
|
||||
@@ -22,7 +22,7 @@ packages:
|
||||
optional: true
|
||||
|
||||
/pkg-with-optional/1.0.0:
|
||||
resolution: {integrity: sha512-7AWJ2Klh/yO1j5Gm0I1z67Wfc7nRm5gjT/y8WMGzWi2CaByepwP00VAbs1QHJtmiccGT0UEC8Oz2So+lCjHdvA==}
|
||||
resolution: {integrity: sha512-gGOtjrYcYG9FHYHHzaerrVwi5bRmPwrjYlm89lqr4j4HgtYNPXUN8skpzHjKvntregnF3K9dn0z2XxMQrLtydA==}
|
||||
optionalDependencies:
|
||||
not-compatible-with-any-os: 1.0.0
|
||||
dev: false
|
||||
|
||||
66
packages/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml
generated
vendored
66
packages/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml
generated
vendored
@@ -8,25 +8,25 @@ dependencies:
|
||||
|
||||
packages:
|
||||
|
||||
/@most/multicast/1.3.0_most@1.8.1:
|
||||
/@most/multicast/1.3.0_most@1.9.0:
|
||||
resolution: {integrity: sha512-DWH8AShgp5bXn+auGzf5tzPxvpmEvQJd0CNsApOci1LDF4eAEcnw4HQOr2Jaa+L92NbDYFKBSXxll+i7r1ikvw==}
|
||||
peerDependencies:
|
||||
most: ^1.0.1
|
||||
dependencies:
|
||||
'@most/prelude': 1.7.3
|
||||
most: 1.8.1
|
||||
'@most/prelude': 1.8.0
|
||||
most: 1.9.0
|
||||
dev: false
|
||||
|
||||
/@most/prelude/1.7.3:
|
||||
resolution: {integrity: sha512-qWWEnA22UP1lzFfKx75XMut6DUUXGRKe7qv2k+Bgs7ju8lwb5RjsZYyQZ+VcsYvHcIavHKzseLlBMLOe2CvUZw==}
|
||||
/@most/prelude/1.8.0:
|
||||
resolution: {integrity: sha512-t1CcURpZzfmBA6fEWwqmCqeNzWAj1w2WqEmCk/2yXMe/p8Ut000wFmVKMy8A1Rl9VVxZEZ5nBHd/pU0dR4bv/w==}
|
||||
dev: false
|
||||
|
||||
/@types/common-tags/1.8.0:
|
||||
resolution: {integrity: sha512-htRqZr5qn8EzMelhX/Xmx142z218lLyGaeZ3YR8jlze4TATRU9huKKvuBmAJEW4LCC4pnY1N6JAm6p85fMHjhg==}
|
||||
/@types/common-tags/1.8.1:
|
||||
resolution: {integrity: sha512-20R/mDpKSPWdJs5TOpz3e7zqbeCNuMCPhV7Yndk9KU2Rbij2r5W4RzwDPkzC+2lzUqXYu9rFzTktCBnDjHuNQg==}
|
||||
dev: false
|
||||
|
||||
/@types/node/9.6.58:
|
||||
resolution: {integrity: sha512-I5B2ZIvr5G5qW6VUZgMk284p/41/U5x3Lqyz3Hz9va3bmxgV7p5CBnDPGv/lGFgGDP4415pqZXLsa4cKA3BHAg==}
|
||||
/@types/node/9.6.61:
|
||||
resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==}
|
||||
dev: false
|
||||
|
||||
/@types/ramda/0.25.51:
|
||||
@@ -106,6 +106,13 @@ packages:
|
||||
resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
|
||||
dev: false
|
||||
|
||||
/define-properties/1.1.3:
|
||||
resolution: {integrity: sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
object-keys: 1.1.1
|
||||
dev: false
|
||||
|
||||
/escape-string-regexp/1.0.5:
|
||||
resolution: {integrity: sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=}
|
||||
engines: {node: '>=0.8.0'}
|
||||
@@ -118,6 +125,13 @@ packages:
|
||||
source-map: 0.6.1
|
||||
dev: false
|
||||
|
||||
/globalthis/1.0.2:
|
||||
resolution: {integrity: sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dependencies:
|
||||
define-properties: 1.1.3
|
||||
dev: false
|
||||
|
||||
/has-flag/3.0.0:
|
||||
resolution: {integrity: sha1-tdRU3CGZriJWmfNGfloH87lVuv0=}
|
||||
engines: {node: '>=4'}
|
||||
@@ -144,20 +158,21 @@ packages:
|
||||
resolution: {integrity: sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==}
|
||||
dev: false
|
||||
|
||||
/most-last/1.0.1_most@1.8.1:
|
||||
/most-last/1.0.1_most@1.9.0:
|
||||
resolution: {integrity: sha512-ycc+leSrXoGRjxhsZJW/l+Sk0CXj9e/z6EP5ebZ8A+zDWGRq1v/oeNkyQF4TG95LnT5Q0ysG+5piJYSR86k58A==}
|
||||
peerDependencies:
|
||||
most: ^1.0.3
|
||||
dependencies:
|
||||
most: 1.8.1
|
||||
most: 1.9.0
|
||||
dev: false
|
||||
|
||||
/most/1.8.1:
|
||||
resolution: {integrity: sha512-sN3lHtEvVNq5ay/pT93fKQ2XVW2uwbUypSWGt/DYCxGKuyvxaNd8mProK0M4k6irqeh1WD3pWrg4RdrCPohqDQ==}
|
||||
/most/1.9.0:
|
||||
resolution: {integrity: sha512-M7yHMcMGaclzEL6eg8Yh8PlAsaWfL/oSThF4+ZuWKM5CKXcbzmLh+qESwgZFzMKHJ+iVJwb28yFvDEOobI653w==}
|
||||
dependencies:
|
||||
'@most/multicast': 1.3.0_most@1.8.1
|
||||
'@most/prelude': 1.7.3
|
||||
symbol-observable: 1.2.0
|
||||
'@most/multicast': 1.3.0_most@1.9.0
|
||||
'@most/prelude': 1.8.0
|
||||
globalthis: 1.0.2
|
||||
symbol-observable: 2.0.3
|
||||
dev: false
|
||||
|
||||
/ndjson/1.5.0:
|
||||
@@ -170,6 +185,11 @@ packages:
|
||||
through2: 2.0.5
|
||||
dev: false
|
||||
|
||||
/object-keys/1.1.1:
|
||||
resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
dev: false
|
||||
|
||||
/onetime/2.0.1:
|
||||
resolution: {integrity: sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=}
|
||||
engines: {node: '>=4'}
|
||||
@@ -184,16 +204,16 @@ packages:
|
||||
peerDependencies:
|
||||
supi: '>=0.12.5 <0.15.0'
|
||||
dependencies:
|
||||
'@types/common-tags': 1.8.0
|
||||
'@types/node': 9.6.58
|
||||
'@types/common-tags': 1.8.1
|
||||
'@types/node': 9.6.61
|
||||
'@types/ramda': 0.25.51
|
||||
'@types/semver': 5.5.0
|
||||
ansi-diff: 1.1.1
|
||||
chalk: 2.4.2
|
||||
cli-cursor: 2.1.0
|
||||
common-tags: 1.8.0
|
||||
most: 1.8.1
|
||||
most-last: 1.0.1_most@1.8.1
|
||||
most: 1.9.0
|
||||
most-last: 1.0.1_most@1.9.0
|
||||
ndjson: 1.5.0
|
||||
pretty-bytes: 4.0.2
|
||||
ramda: 0.25.0
|
||||
@@ -283,9 +303,9 @@ packages:
|
||||
has-flag: 3.0.0
|
||||
dev: false
|
||||
|
||||
/symbol-observable/1.2.0:
|
||||
resolution: {integrity: sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
/symbol-observable/2.0.3:
|
||||
resolution: {integrity: sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA==}
|
||||
engines: {node: '>=0.10'}
|
||||
dev: false
|
||||
|
||||
/through2/2.0.5:
|
||||
|
||||
16
packages/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml
generated
vendored
16
packages/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml
generated
vendored
@@ -20,14 +20,14 @@ devDependencies:
|
||||
|
||||
packages:
|
||||
|
||||
/balanced-match/1.0.0:
|
||||
resolution: {integrity: sha1-ibTRmasr7kneFk6gK4nORi1xt2c=}
|
||||
/balanced-match/1.0.2:
|
||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||
dev: false
|
||||
|
||||
/brace-expansion/1.1.11:
|
||||
resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
|
||||
dependencies:
|
||||
balanced-match: 1.0.0
|
||||
balanced-match: 1.0.2
|
||||
concat-map: 0.0.1
|
||||
dev: false
|
||||
|
||||
@@ -45,8 +45,8 @@ packages:
|
||||
resolution: {integrity: sha1-FQStJSMVjKpA20onh8sBQRmU6k8=}
|
||||
dev: false
|
||||
|
||||
/glob/7.1.6:
|
||||
resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
|
||||
/glob/7.1.7:
|
||||
resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==}
|
||||
dependencies:
|
||||
fs.realpath: 1.0.0
|
||||
inflight: 1.0.6
|
||||
@@ -57,7 +57,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
/hello-world-js-bin/1.0.0:
|
||||
resolution: {integrity: sha512-/ENgcDSnEOz7y99zf3U9IrvQ0WQL+Ddr5Z3nqrrBkr6jaFFu7ujJye0Ne1/4lziovy6UiXMbjVp6vv6P7etKSA==}
|
||||
resolution: {integrity: sha512-g9DaVvwKClJZUDrsYc7DRhvwMuGLzWlKOJlrHWZz5qiT/RdE1jdT+7Fh1T5XNKW7Oa/pbyxHNz7fK1+vLXe/3w==}
|
||||
hasBin: true
|
||||
dev: false
|
||||
|
||||
@@ -100,7 +100,7 @@ packages:
|
||||
dev: false
|
||||
|
||||
/pkg-with-peer-having-bin/1.0.0:
|
||||
resolution: {integrity: sha512-UrbRC+vOD2Rs32vSzpZFXuzHm/ewvz9Fst9/uu13SrCOc4o6ioj+DBN+fdyG6JxD46EFSGP3bSlev3RRL2c3XQ==}
|
||||
resolution: {integrity: sha512-nkUSkBlH/EOCd3WhpWCeDLsl5In3oXLLQ83miHtqDzg7VG9ODhMcz/vYIUhSy9b7d8csEYS/0O30zjA/evqvrA==}
|
||||
peerDependencies:
|
||||
peer-with-bin: ^1.0.0
|
||||
dependencies:
|
||||
@@ -111,7 +111,7 @@ packages:
|
||||
resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
glob: 7.1.6
|
||||
glob: 7.1.7
|
||||
dev: false
|
||||
|
||||
/wrappy/1.0.2:
|
||||
|
||||
8
packages/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml
generated
vendored
8
packages/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml
generated
vendored
@@ -12,8 +12,8 @@ optionalDependencies:
|
||||
|
||||
packages:
|
||||
|
||||
/dep-of-pkg-with-1-dep/100.0.0:
|
||||
resolution: {integrity: sha512-lKXGmfrRNYKcd0+oWS8lZb08dbTm3WRbB5Lq3O35WigqJHNSsYIQB/lLrdTyJDBil9tS8SACdXp64zJXGk72jA==}
|
||||
/dep-of-pkg-with-1-dep/101.0.0:
|
||||
resolution: {integrity: sha512-t0/gFM29VnZhyyDu0ay/u42e8tPi2lkJtdbBXdUujfFFeXxvSJXISpddbVRwjNkKSX6fUROMek29b9b+MqYDxA==}
|
||||
dev: false
|
||||
|
||||
/is-positive/1.0.0:
|
||||
@@ -23,9 +23,9 @@ packages:
|
||||
optional: true
|
||||
|
||||
/pkg-with-good-optional/1.0.0:
|
||||
resolution: {integrity: sha512-gos9k175h8q97LuQKrjZrdUiYsbWeCfG8g6jKDX4UU/D3IhpaEqbEoSlXC/W5NiojUNo/pZXikGrdnJl8miusw==}
|
||||
resolution: {integrity: sha512-wDCpH6PTS5BCNi3ugdM0xzVYNEeKcl8o5Zm+FxQuNU4WJsTCrRrPXN9r8T4UNT+kgIZzIY5bx8rcPlAzYYWOXw==}
|
||||
dependencies:
|
||||
dep-of-pkg-with-1-dep: 100.0.0
|
||||
dep-of-pkg-with-1-dep: 101.0.0
|
||||
optionalDependencies:
|
||||
is-positive: 1.0.0
|
||||
dev: false
|
||||
|
||||
@@ -541,7 +541,7 @@ test('installation of a dependency that has a resolved peer in subdeps', async (
|
||||
|
||||
test('installing with hoistPattern=*', async () => {
|
||||
const prefix = path.join(fixtures, 'simple-shamefully-flatten')
|
||||
const reporter = sinon.spy()
|
||||
const reporter = jest.fn()
|
||||
|
||||
await headless(await testDefaults({ lockfileDir: prefix, reporter, hoistPattern: '*' }))
|
||||
|
||||
@@ -560,39 +560,42 @@ test('installing with hoistPattern=*', async () => {
|
||||
expect(await project.readCurrentLockfile()).toBeTruthy()
|
||||
expect(await project.readModulesManifest()).toBeTruthy()
|
||||
|
||||
expect(reporter.calledWithMatch({
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
level: 'debug',
|
||||
name: 'pnpm:package-manifest',
|
||||
updated: await loadJsonFile(path.join(prefix, 'package.json')),
|
||||
} as PackageManifestLog)).toBeTruthy()
|
||||
expect(reporter.calledWithMatch({
|
||||
updated: expect.objectContaining({
|
||||
name: 'simple-shamefully-flatten',
|
||||
version: '1.0.0',
|
||||
}),
|
||||
} as PackageManifestLog))
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
added: 17,
|
||||
level: 'debug',
|
||||
name: 'pnpm:stats',
|
||||
prefix,
|
||||
} as StatsLog)).toBeTruthy()
|
||||
expect(reporter.calledWithMatch({
|
||||
} as StatsLog))
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
level: 'debug',
|
||||
name: 'pnpm:stats',
|
||||
prefix,
|
||||
removed: 0,
|
||||
} as StatsLog)).toBeTruthy()
|
||||
expect(reporter.calledWithMatch({
|
||||
} as StatsLog))
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
level: 'debug',
|
||||
name: 'pnpm:stage',
|
||||
prefix,
|
||||
stage: 'importing_done',
|
||||
} as StageLog)).toBeTruthy()
|
||||
expect(reporter.calledWithMatch({
|
||||
} as StageLog))
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
level: 'debug',
|
||||
packageId: `localhost+${REGISTRY_MOCK_PORT}/is-negative/2.1.0`,
|
||||
requester: prefix,
|
||||
status: 'resolved',
|
||||
})).toBeTruthy()
|
||||
}))
|
||||
|
||||
const modules = await project.readModulesManifest()
|
||||
|
||||
expect(modules!.hoistedDependencies['/balanced-match/1.0.0']).toStrictEqual({ 'balanced-match': 'private' })
|
||||
expect(modules!.hoistedDependencies['/balanced-match/1.0.2']).toStrictEqual({ 'balanced-match': 'private' })
|
||||
})
|
||||
|
||||
test('installing with publicHoistPattern=*', async () => {
|
||||
@@ -649,7 +652,7 @@ test('installing with publicHoistPattern=*', async () => {
|
||||
|
||||
const modules = await project.readModulesManifest()
|
||||
|
||||
expect(modules!.hoistedDependencies['/balanced-match/1.0.0']).toStrictEqual({ 'balanced-match': 'public' })
|
||||
expect(modules!.hoistedDependencies['/balanced-match/1.0.2']).toStrictEqual({ 'balanced-match': 'public' })
|
||||
})
|
||||
|
||||
test('installing with publicHoistPattern=* in a project with external lockfile', async () => {
|
||||
|
||||
@@ -497,3 +497,13 @@ test('lockfile is updated if neverBuiltDependencies is changed', async () => {
|
||||
expect(lockfile.packages['/install-script-example/1.0.0'].requiresBuild).toBeTruthy()
|
||||
}
|
||||
})
|
||||
|
||||
test('lifecycle scripts have access to package\'s own binary by binary name', async () => {
|
||||
const project = prepareEmpty()
|
||||
await addDependenciesToPackage({},
|
||||
['runs-own-bin'],
|
||||
await testDefaults({ fastUnpack: false })
|
||||
)
|
||||
|
||||
await project.isExecutable('.pnpm/runs-own-bin@1.0.0/node_modules/runs-own-bin/node_modules/.bin/runs-own-bin')
|
||||
})
|
||||
|
||||
86
pnpm-lock.yaml
generated
86
pnpm-lock.yaml
generated
@@ -31,7 +31,7 @@ importers:
|
||||
'@commitlint/prompt-cli': ^12.1.1
|
||||
'@pnpm/eslint-config': workspace:*
|
||||
'@pnpm/meta-updater': 0.0.6
|
||||
'@pnpm/registry-mock': ^2.5.0
|
||||
'@pnpm/registry-mock': ^2.6.0
|
||||
'@pnpm/tsconfig': workspace:*
|
||||
'@types/jest': ^26.0.23
|
||||
'@types/node': ^14.14.33
|
||||
@@ -59,7 +59,7 @@ importers:
|
||||
'@commitlint/prompt-cli': 12.1.4
|
||||
'@pnpm/eslint-config': link:utils/eslint-config
|
||||
'@pnpm/meta-updater': 0.0.6
|
||||
'@pnpm/registry-mock': 2.5.0
|
||||
'@pnpm/registry-mock': 2.6.0
|
||||
'@pnpm/tsconfig': link:utils/tsconfig
|
||||
'@types/jest': 26.0.24
|
||||
'@types/node': 14.17.5
|
||||
@@ -4396,15 +4396,15 @@ packages:
|
||||
load-json-file: 6.2.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/cli-utils/0.6.14_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-+b26oTr9GEK1ylLZ+/qF1JB46a9Xo9xI9TmCp4mf/MUA+gp1oLwimdpwhQg6uOshm24v3M6xfT55/kmDf5TACQ==}
|
||||
/@pnpm/cli-utils/0.6.16_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-SLyGa/a5AWRS2u2gPXNAz43Qmaj1YV+Z3yunCCc9R8lP2JiqrwCHozNxgawj+geBwjatDKfjvkNEypyF7jDoUg==}
|
||||
engines: {node: '>=12.17'}
|
||||
peerDependencies:
|
||||
'@pnpm/logger': ^4.0.0
|
||||
dependencies:
|
||||
'@pnpm/cli-meta': 2.0.0
|
||||
'@pnpm/config': 12.4.4
|
||||
'@pnpm/default-reporter': 8.1.9_@pnpm+logger@4.0.0
|
||||
'@pnpm/config': 12.4.6
|
||||
'@pnpm/default-reporter': 8.1.11_@pnpm+logger@4.0.0
|
||||
'@pnpm/error': 2.0.0
|
||||
'@pnpm/logger': 4.0.0
|
||||
'@pnpm/manifest-utils': 2.0.4_@pnpm+logger@4.0.0
|
||||
@@ -4421,8 +4421,8 @@ packages:
|
||||
chalk: 4.1.1
|
||||
dev: false
|
||||
|
||||
/@pnpm/config/12.4.4:
|
||||
resolution: {integrity: sha512-C1fn03ymtNqWlruifF9RkzNoZym7qFanL5aQRGkk7Y3HaE3Bo+bzwEED7O6HmVmI7UUWVYMBNeWPPeIMxsbPyA==}
|
||||
/@pnpm/config/12.4.6:
|
||||
resolution: {integrity: sha512-Yv0QPVScuTFskRs3Z1mbLL1Phlzzw/6PYXeSNT+zQ3s9WgTbwaJNNF7mE4XJYON6DleCEo3LtYYQniYJupPsLA==}
|
||||
engines: {node: '>=12.17'}
|
||||
dependencies:
|
||||
'@pnpm/constants': 5.0.0
|
||||
@@ -4453,11 +4453,11 @@ packages:
|
||||
'@pnpm/types': 7.4.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/default-reporter/8.1.9_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-j0hS8Il3zKtYaQCZoRxQIT8YxUbhYKSNVTycyiEgL6dKxyCcgoRG32lcirKPzeQ5dMX5hGPkROjFF0JPecKm1Q==}
|
||||
/@pnpm/default-reporter/8.1.11_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-61Y2YYpGfEjSz8EagSTdYdmpoU7J2pDcS4wBlT9VhMoLVlZSzOQBtA+QGhsQ0wWK7uKmrN0RzUOJSyPH04cnhA==}
|
||||
engines: {node: '>=12.17'}
|
||||
dependencies:
|
||||
'@pnpm/config': 12.4.4
|
||||
'@pnpm/config': 12.4.6
|
||||
'@pnpm/core-loggers': 6.0.4_@pnpm+logger@4.0.0
|
||||
'@pnpm/error': 2.0.0
|
||||
'@pnpm/types': 7.4.0
|
||||
@@ -4508,11 +4508,11 @@ packages:
|
||||
find-up: 5.0.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/find-workspace-packages/3.1.6_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-xI+a5BGvVfISvqukX+kCULUY2EmuRsfJzs6l3fZQjvGmoMVHD1ZipWBl1fedVxUzi/YqbQL8PiXdsJjsxlIS/w==}
|
||||
/@pnpm/find-workspace-packages/3.1.8_@pnpm+logger@4.0.0:
|
||||
resolution: {integrity: sha512-5vxOeFCwtEDW/HRzLRa9RXh/3SU510/I/uuNKszfBtGHZiiyH/S3LZRtCdYNtjqoY522+fULrylnGSNOG+yghQ==}
|
||||
engines: {node: '>=12.17'}
|
||||
dependencies:
|
||||
'@pnpm/cli-utils': 0.6.14_@pnpm+logger@4.0.0
|
||||
'@pnpm/cli-utils': 0.6.16_@pnpm+logger@4.0.0
|
||||
'@pnpm/constants': 5.0.0
|
||||
'@pnpm/types': 7.4.0
|
||||
find-packages: 8.0.5
|
||||
@@ -4534,7 +4534,7 @@ packages:
|
||||
resolution: {integrity: sha512-bb+NcVgVBjm81skP73c0i4o2NUxiBt0d30KLXHJ05EejQ/qbxQMsi/gZxsi8MKbzCky2DzykQYkzm2tl3XajAQ==}
|
||||
engines: {node: '>=12.17'}
|
||||
dependencies:
|
||||
graceful-fs: 4.2.6
|
||||
graceful-fs: 4.2.8
|
||||
dev: true
|
||||
|
||||
/@pnpm/logger/4.0.0:
|
||||
@@ -4561,7 +4561,7 @@ packages:
|
||||
hasBin: true
|
||||
dependencies:
|
||||
'@pnpm/find-workspace-dir': 3.0.1
|
||||
'@pnpm/find-workspace-packages': 3.1.6_@pnpm+logger@4.0.0
|
||||
'@pnpm/find-workspace-packages': 3.1.8_@pnpm+logger@4.0.0
|
||||
'@pnpm/logger': 4.0.0
|
||||
'@pnpm/types': 7.4.0
|
||||
load-json-file: 6.2.0
|
||||
@@ -4609,8 +4609,8 @@ packages:
|
||||
strip-bom: 4.0.0
|
||||
dev: true
|
||||
|
||||
/@pnpm/registry-mock/2.5.0:
|
||||
resolution: {integrity: sha512-emFGPuR/Sk7yov/A8/ohBjrId2P8WJoaMOiHq5rVSDRcXc3fnUIxRr9gNEaaokZHYe5aW9oCdyBMGMFBPT747w==}
|
||||
/@pnpm/registry-mock/2.6.0:
|
||||
resolution: {integrity: sha512-4uvHCRI10A/cP7xfV3ky+I5Es5K891MKmZV6JaDurhd+QNkaQCtLiAi9rCh2TjcmB1oaPshRaXvqHF7Zh4O5Vw==}
|
||||
engines: {node: '>=10.13'}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
@@ -5522,7 +5522,7 @@ packages:
|
||||
resolution: {integrity: sha1-+/Cb1GwnYBFGrO1CHgN3VPqHg+s=}
|
||||
dependencies:
|
||||
concat-stream: 1.6.2
|
||||
graceful-fs: 4.2.6
|
||||
graceful-fs: 4.2.8
|
||||
normalize-package-data: 2.5.0
|
||||
npm-package-arg: 4.2.1
|
||||
once: 1.4.0
|
||||
@@ -6207,7 +6207,7 @@ packages:
|
||||
dependencies:
|
||||
ansi-align: 3.0.0
|
||||
camelcase: 6.2.0
|
||||
chalk: 4.1.1
|
||||
chalk: 4.1.2
|
||||
cli-boxes: 2.2.1
|
||||
string-width: 4.2.2
|
||||
type-fest: 0.20.2
|
||||
@@ -6295,6 +6295,10 @@ packages:
|
||||
/buffer-from/1.1.1:
|
||||
resolution: {integrity: sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==}
|
||||
|
||||
/buffer-from/1.1.2:
|
||||
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
|
||||
dev: true
|
||||
|
||||
/buffer/5.7.1:
|
||||
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
|
||||
dependencies:
|
||||
@@ -6515,7 +6519,6 @@ packages:
|
||||
dependencies:
|
||||
ansi-styles: 4.3.0
|
||||
supports-color: 7.2.0
|
||||
dev: true
|
||||
|
||||
/char-regex/1.0.2:
|
||||
resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==}
|
||||
@@ -6804,7 +6807,7 @@ packages:
|
||||
resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==}
|
||||
engines: {'0': node >= 0.8}
|
||||
dependencies:
|
||||
buffer-from: 1.1.1
|
||||
buffer-from: 1.1.2
|
||||
inherits: 2.0.4
|
||||
readable-stream: 2.3.7
|
||||
typedarray: 0.0.6
|
||||
@@ -6951,7 +6954,7 @@ packages:
|
||||
resolution: {integrity: sha1-uaVQOLfNgaNcF7l2GJW9hJau8eU=}
|
||||
hasBin: true
|
||||
dependencies:
|
||||
graceful-fs: 4.2.6
|
||||
graceful-fs: 4.2.8
|
||||
minimist: 1.2.5
|
||||
mkdirp: 0.5.5
|
||||
rimraf: 3.0.2
|
||||
@@ -7276,7 +7279,7 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
globby: 11.0.4
|
||||
graceful-fs: 4.2.6
|
||||
graceful-fs: 4.2.8
|
||||
is-glob: 4.0.1
|
||||
is-path-cwd: 2.2.0
|
||||
is-path-inside: 3.0.3
|
||||
@@ -8304,7 +8307,7 @@ packages:
|
||||
dependencies:
|
||||
asynckit: 0.4.0
|
||||
combined-stream: 1.0.8
|
||||
mime-types: 2.1.31
|
||||
mime-types: 2.1.32
|
||||
dev: true
|
||||
|
||||
/form-data/3.0.1:
|
||||
@@ -8689,6 +8692,9 @@ packages:
|
||||
/graceful-fs/4.2.6:
|
||||
resolution: {integrity: sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==}
|
||||
|
||||
/graceful-fs/4.2.8:
|
||||
resolution: {integrity: sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==}
|
||||
|
||||
/graceful-git/3.0.2:
|
||||
resolution: {integrity: sha512-fZ5zG+uT3zRqpRU7kXEUQkbRfIK66JRLfV528Glm703gr/qVfF0zppqC4ksuO1fLmlxBNAxLqQUfhF/vAriMtQ==}
|
||||
engines: {node: '>=10'}
|
||||
@@ -9392,6 +9398,10 @@ packages:
|
||||
resolution: {integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
/is-stream/2.0.1:
|
||||
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
/is-string/1.0.6:
|
||||
resolution: {integrity: sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==}
|
||||
engines: {node: '>= 0.4'}
|
||||
@@ -10809,12 +10819,24 @@ packages:
|
||||
resolution: {integrity: sha512-FM3QwxV+TnZYQ2aRqhlKBMHxk10lTbMt3bBkMAp54ddrNeVSfcQYOOKuGuy3Ddrm38I04If834fOUSq1yzslJQ==}
|
||||
engines: {node: '>= 0.6'}
|
||||
|
||||
/mime-db/1.49.0:
|
||||
resolution: {integrity: sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dev: true
|
||||
|
||||
/mime-types/2.1.31:
|
||||
resolution: {integrity: sha512-XGZnNzm3QvgKxa8dpzyhFTHmpP3l5YNusmne07VUOXxou9CqUqYa/HBy124RqtVh/O2pECas/MOcsDgpilPOPg==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dependencies:
|
||||
mime-db: 1.48.0
|
||||
|
||||
/mime-types/2.1.32:
|
||||
resolution: {integrity: sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==}
|
||||
engines: {node: '>= 0.6'}
|
||||
dependencies:
|
||||
mime-db: 1.49.0
|
||||
dev: true
|
||||
|
||||
/mime/1.6.0:
|
||||
resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==}
|
||||
engines: {node: '>=4'}
|
||||
@@ -12679,7 +12701,7 @@ packages:
|
||||
is-typedarray: 1.0.0
|
||||
isstream: 0.1.2
|
||||
json-stringify-safe: 5.0.1
|
||||
mime-types: 2.1.31
|
||||
mime-types: 2.1.32
|
||||
oauth-sign: 0.9.0
|
||||
performance-now: 2.1.0
|
||||
qs: 6.5.2
|
||||
@@ -13221,7 +13243,7 @@ packages:
|
||||
resolution: {integrity: sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==}
|
||||
dependencies:
|
||||
spdx-expression-parse: 3.0.1
|
||||
spdx-license-ids: 3.0.9
|
||||
spdx-license-ids: 3.0.10
|
||||
|
||||
/spdx-exceptions/2.3.0:
|
||||
resolution: {integrity: sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==}
|
||||
@@ -13230,10 +13252,10 @@ packages:
|
||||
resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==}
|
||||
dependencies:
|
||||
spdx-exceptions: 2.3.0
|
||||
spdx-license-ids: 3.0.9
|
||||
spdx-license-ids: 3.0.10
|
||||
|
||||
/spdx-license-ids/3.0.9:
|
||||
resolution: {integrity: sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==}
|
||||
/spdx-license-ids/3.0.10:
|
||||
resolution: {integrity: sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==}
|
||||
|
||||
/split-cmd/1.0.1:
|
||||
resolution: {integrity: sha512-HnyUFgtv7yNcGKK1+tO1O2eyXwEVnXqQzjshvroHsCu4M9fxS8lJ3bpW9XfD8YG0SdxW6hXNHdT/VFAxtNY1yw==}
|
||||
@@ -13613,7 +13635,7 @@ packages:
|
||||
engines: {node: '>=10'}
|
||||
dependencies:
|
||||
del: 6.0.0
|
||||
is-stream: 2.0.0
|
||||
is-stream: 2.0.1
|
||||
temp-dir: 2.0.0
|
||||
type-fest: 0.16.0
|
||||
unique-string: 2.0.0
|
||||
@@ -14632,7 +14654,7 @@ packages:
|
||||
/wide-align/1.1.3:
|
||||
resolution: {integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==}
|
||||
dependencies:
|
||||
string-width: 2.1.1
|
||||
string-width: 1.0.2
|
||||
|
||||
/widest-line/2.0.1:
|
||||
resolution: {integrity: sha512-Ba5m9/Fa4Xt9eb2ELXt77JxVDV8w7qQrH0zS/TWSJdLyAwQjWoOzpzj5lwVftDz6n/EOu3tNACS84v509qwnJA==}
|
||||
|
||||
Reference in New Issue
Block a user