mirror of
https://github.com/pnpm/pnpm.git
synced 2025-12-25 08:08:14 -05:00
feat: loading pnpmfiles automatically from plugins (#9729)
This commit is contained in:
5
.changeset/floppy-grapes-kick.md
Normal file
5
.changeset/floppy-grapes-kick.md
Normal file
@@ -0,0 +1,5 @@
|
||||
---
|
||||
"@pnpm/pnpmfile": major
|
||||
---
|
||||
|
||||
Always expects an array of pnpmfiles.
|
||||
8
.changeset/thin-ghosts-feel.md
Normal file
8
.changeset/thin-ghosts-feel.md
Normal file
@@ -0,0 +1,8 @@
|
||||
---
|
||||
"@pnpm/cli-utils": minor
|
||||
"pnpm": minor
|
||||
---
|
||||
|
||||
pnpm will now automatically load the `pnpmfile.cjs` file from any [config dependency](https://pnpm.io/config-dependencies) named `@pnpm/plugin-*` or `pnpm-plugin-*` [#9729](https://github.com/pnpm/pnpm/pull/9729).
|
||||
|
||||
The order in which config dependencies are initialized should not matter — they are initialized in alphabetical order. If a specific order is needed, the paths to the `pnpmfile.cjs` files in the config dependencies can be explicitly listed using the `pnpmfile` setting in `pnpm-workspace.yaml`.
|
||||
@@ -41,6 +41,7 @@
|
||||
"@pnpm/read-project-manifest": "workspace:*",
|
||||
"@pnpm/store-connection-manager": "workspace:*",
|
||||
"@pnpm/types": "workspace:*",
|
||||
"@pnpm/util.lex-comparator": "catalog:",
|
||||
"chalk": "catalog:",
|
||||
"load-json-file": "catalog:"
|
||||
},
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import path from 'path'
|
||||
import { packageManager } from '@pnpm/cli-meta'
|
||||
import { getConfig as _getConfig, type CliOptions, type Config } from '@pnpm/config'
|
||||
import { formatWarn } from '@pnpm/default-reporter'
|
||||
import { createOrConnectStoreController } from '@pnpm/store-connection-manager'
|
||||
import { installConfigDeps } from '@pnpm/config.deps-installer'
|
||||
import { requireHooks } from '@pnpm/pnpmfile'
|
||||
import { lexCompare } from '@pnpm/util.lex-comparator'
|
||||
|
||||
export async function getConfig (
|
||||
cliOptions: CliOptions,
|
||||
@@ -35,7 +37,15 @@ export async function getConfig (
|
||||
})
|
||||
}
|
||||
if (!config.ignorePnpmfile) {
|
||||
const { hooks, resolvedPnpmfilePaths } = requireHooks(config.lockfileDir ?? config.dir, config)
|
||||
const pnpmfiles = config.pnpmfile == null ? [] : Array.isArray(config.pnpmfile) ? config.pnpmfile : [config.pnpmfile]
|
||||
if (config.configDependencies) {
|
||||
const configModulesDir = path.join(config.lockfileDir ?? config.rootProjectManifestDir, 'node_modules/.pnpm-config')
|
||||
pnpmfiles.push(...calcPnpmfilePathsOfPluginDeps(configModulesDir, config.configDependencies))
|
||||
}
|
||||
const { hooks, resolvedPnpmfilePaths } = requireHooks(config.lockfileDir ?? config.dir, {
|
||||
globalPnpmfile: config.globalPnpmfile,
|
||||
pnpmfiles,
|
||||
})
|
||||
config.hooks = hooks
|
||||
config.pnpmfile = resolvedPnpmfilePaths
|
||||
if (config.hooks?.updateConfig) {
|
||||
@@ -56,3 +66,11 @@ export async function getConfig (
|
||||
|
||||
return config
|
||||
}
|
||||
|
||||
function * calcPnpmfilePathsOfPluginDeps (configModulesDir: string, configDependencies: Record<string, string>): Generator<string> {
|
||||
for (const configDepName of Object.keys(configDependencies).sort(lexCompare)) {
|
||||
if (configDepName.startsWith('@pnpm/plugin-') || configDepName.startsWith('pnpm-plugin-')) {
|
||||
yield path.join(configModulesDir, configDepName, 'pnpmfile.cjs')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ export function requireHooks (
|
||||
prefix: string,
|
||||
opts: {
|
||||
globalPnpmfile?: string
|
||||
pnpmfile?: string[] | string
|
||||
pnpmfiles?: string[]
|
||||
}
|
||||
): RequireHooksResult {
|
||||
const pnpmfiles: PnpmfileEntry[] = []
|
||||
@@ -62,17 +62,10 @@ export function requireHooks (
|
||||
includeInChecksum: true,
|
||||
optional: true,
|
||||
})
|
||||
if (opts.pnpmfile) {
|
||||
if (Array.isArray(opts.pnpmfile)) {
|
||||
for (const pnpmfile of opts.pnpmfile) {
|
||||
pnpmfiles.push({
|
||||
path: pnpmfile,
|
||||
includeInChecksum: true,
|
||||
})
|
||||
}
|
||||
} else {
|
||||
if (opts.pnpmfiles) {
|
||||
for (const pnpmfile of opts.pnpmfiles) {
|
||||
pnpmfiles.push({
|
||||
path: opts.pnpmfile,
|
||||
path: pnpmfile,
|
||||
includeInChecksum: true,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -30,7 +30,7 @@ test('readPackage hook run fails when returned dependencies is not an object ',
|
||||
test('filterLog hook combines with the global hook', () => {
|
||||
const globalPnpmfile = path.join(__dirname, '__fixtures__/globalFilterLog.js')
|
||||
const pnpmfile = path.join(__dirname, '__fixtures__/filterLog.js')
|
||||
const { hooks } = requireHooks(__dirname, { globalPnpmfile, pnpmfile: [pnpmfile] })
|
||||
const { hooks } = requireHooks(__dirname, { globalPnpmfile, pnpmfiles: [pnpmfile] })
|
||||
|
||||
expect(hooks.filterLog).toBeDefined()
|
||||
expect(hooks.filterLog!.length).toBe(2)
|
||||
@@ -54,22 +54,22 @@ test('calculatePnpmfileChecksum is undefined when pnpmfile does not exist', asyn
|
||||
|
||||
test('calculatePnpmfileChecksum resolves to hash string for existing pnpmfile', async () => {
|
||||
const pnpmfile = path.join(__dirname, '__fixtures__/readPackageNoObject.js')
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfile: [pnpmfile] })
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfiles: [pnpmfile] })
|
||||
expect(typeof await hooks.calculatePnpmfileChecksum?.()).toBe('string')
|
||||
})
|
||||
|
||||
test('calculatePnpmfileChecksum is undefined if pnpmfile even when it exports undefined', async () => {
|
||||
const pnpmfile = path.join(__dirname, '__fixtures__/undefined.js')
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfile: [pnpmfile] })
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfiles: [pnpmfile] })
|
||||
expect(hooks.calculatePnpmfileChecksum).toBeUndefined()
|
||||
})
|
||||
|
||||
test('updateConfig throws an error if it returns undefined', async () => {
|
||||
const pnpmfile = path.join(__dirname, '__fixtures__/updateConfigReturnsUndefined.js')
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfile: [pnpmfile] })
|
||||
const { hooks } = requireHooks(__dirname, { pnpmfiles: [pnpmfile] })
|
||||
expect(() => hooks.updateConfig![0]!({})).toThrow('The updateConfig hook returned undefined')
|
||||
})
|
||||
|
||||
test('requireHooks throw an error if one of the specified pnpmfiles does not exist', async () => {
|
||||
expect(() => requireHooks(__dirname, { pnpmfile: ['does-not-exist.cjs'] })).toThrow('is not found')
|
||||
expect(() => requireHooks(__dirname, { pnpmfiles: ['does-not-exist.cjs'] })).toThrow('is not found')
|
||||
})
|
||||
|
||||
266
pnpm-lock.yaml
generated
266
pnpm-lock.yaml
generated
@@ -61,8 +61,8 @@ catalogs:
|
||||
specifier: 0.0.1
|
||||
version: 0.0.1
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 4.5.0
|
||||
version: 4.5.0
|
||||
specifier: 4.6.0
|
||||
version: 4.6.0
|
||||
'@pnpm/semver-diff':
|
||||
specifier: ^1.1.0
|
||||
version: 1.1.0
|
||||
@@ -801,7 +801,7 @@ importers:
|
||||
version: link:../packages/logger
|
||||
'@pnpm/meta-updater':
|
||||
specifier: 'catalog:'
|
||||
version: 2.0.6(@types/node@22.15.29)(typanion@3.14.0)
|
||||
version: 2.0.6(@types/node@18.19.34)(typanion@3.14.0)
|
||||
'@pnpm/object.key-sorting':
|
||||
specifier: workspace:*
|
||||
version: link:../object/key-sorting
|
||||
@@ -865,7 +865,7 @@ importers:
|
||||
version: link:../../pkg-manager/modules-yaml
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
@@ -899,7 +899,7 @@ importers:
|
||||
dependencies:
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/store.cafs':
|
||||
specifier: workspace:*
|
||||
version: link:../../store/cafs
|
||||
@@ -974,7 +974,7 @@ importers:
|
||||
dependencies:
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/worker':
|
||||
specifier: workspace:*
|
||||
version: link:../../worker
|
||||
@@ -1160,7 +1160,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@types/ramda':
|
||||
specifier: 'catalog:'
|
||||
version: 0.29.12
|
||||
@@ -1263,6 +1263,9 @@ importers:
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
'@pnpm/util.lex-comparator':
|
||||
specifier: 'catalog:'
|
||||
version: 3.0.2
|
||||
chalk:
|
||||
specifier: 'catalog:'
|
||||
version: 4.1.2
|
||||
@@ -1648,7 +1651,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/testing.temp-store':
|
||||
specifier: workspace:*
|
||||
version: link:../../testing/temp-store
|
||||
@@ -2284,7 +2287,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/types':
|
||||
specifier: workspace:*
|
||||
version: link:../../packages/types
|
||||
@@ -2570,7 +2573,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -2718,7 +2721,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-ipc-server':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-ipc-server
|
||||
@@ -4404,7 +4407,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -4691,7 +4694,7 @@ importers:
|
||||
version: link:../../pkg-manifest/read-package-json
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/store-path':
|
||||
specifier: workspace:*
|
||||
version: link:../../store/store-path
|
||||
@@ -4964,7 +4967,7 @@ importers:
|
||||
version: link:../read-projects-context
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/store-path':
|
||||
specifier: workspace:*
|
||||
version: link:../../store/store-path
|
||||
@@ -5315,7 +5318,7 @@ importers:
|
||||
version: 'link:'
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -5541,7 +5544,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -6145,7 +6148,7 @@ importers:
|
||||
version: link:../pkg-manifest/read-project-manifest
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/run-npm':
|
||||
specifier: workspace:*
|
||||
version: link:../exec/run-npm
|
||||
@@ -6458,7 +6461,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -6585,7 +6588,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-ipc-server':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-ipc-server
|
||||
@@ -7194,7 +7197,7 @@ importers:
|
||||
version: link:../../pkg-manifest/read-package-json
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -7258,7 +7261,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/workspace.filter-packages-from-dir':
|
||||
specifier: workspace:*
|
||||
version: link:../../workspace/filter-packages-from-dir
|
||||
@@ -7343,7 +7346,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/test-fixtures':
|
||||
specifier: workspace:*
|
||||
version: link:../../__utils__/test-fixtures
|
||||
@@ -7697,7 +7700,7 @@ importers:
|
||||
version: link:../../__utils__/prepare
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@types/archy':
|
||||
specifier: 'catalog:'
|
||||
version: 0.0.33
|
||||
@@ -7951,7 +7954,7 @@ importers:
|
||||
version: link:../../store/package-store
|
||||
'@pnpm/registry-mock':
|
||||
specifier: 'catalog:'
|
||||
version: 4.5.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
version: 4.6.0(encoding@0.1.13)(typanion@3.14.0)
|
||||
'@pnpm/store-controller-types':
|
||||
specifier: workspace:*
|
||||
version: link:../../store/store-controller-types
|
||||
@@ -9797,8 +9800,8 @@ packages:
|
||||
resolution: {integrity: sha512-UY5ZFl8jTgWpPMp3qwVt1z455gDLGh4aAna7ufqsJP9qhI6lr9scFpnEamjpA51Y3MJMBtnML8KATmH6RY+NHQ==}
|
||||
engines: {node: '>=18.12'}
|
||||
|
||||
'@pnpm/registry-mock@4.5.0':
|
||||
resolution: {integrity: sha512-xLruwgulp1Q950TJeQmbDyXzH5wIEVM5Wdm2rFHplRLlBbM+9JGaJZpcU0LiqivizD60Ow6cSIZbQ9qxOi9tnQ==}
|
||||
'@pnpm/registry-mock@4.6.0':
|
||||
resolution: {integrity: sha512-VX2paPLc1wmv3mDNZiWVF+xqs47M7iLdemKkkvD50eG1kxjXyTjQMy6sfQjPCn/iFrxea1hpyi6FJ5AtROE7sw==}
|
||||
engines: {node: '>=18.12'}
|
||||
hasBin: true
|
||||
|
||||
@@ -16617,28 +16620,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/cli-utils@1000.1.5(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/cli-meta': 1000.0.8
|
||||
'@pnpm/config': 1003.1.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/config.deps-installer': 1000.0.5(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))
|
||||
'@pnpm/default-reporter': 1002.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/manifest-utils': 1001.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/package-is-installable': 1000.0.10(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/pnpmfile': 1001.2.2(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/read-project-manifest': 1000.0.11
|
||||
'@pnpm/store-connection-manager': 1002.0.3(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/types': 1000.6.0
|
||||
chalk: 4.1.2
|
||||
load-json-file: 6.2.0
|
||||
transitivePeerDependencies:
|
||||
- '@pnpm/worker'
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/client@1000.0.19(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@18.19.34))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/default-resolver': 1002.0.2(@pnpm/logger@1001.0.0)
|
||||
@@ -16658,25 +16639,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/client@1000.0.19(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/default-resolver': 1002.0.2(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/directory-fetcher': 1000.1.7(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/fetch': 1000.2.2(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/fetching-types': 1000.1.0
|
||||
'@pnpm/git-fetcher': 1001.0.8(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/network.auth-header': 1000.0.3
|
||||
'@pnpm/resolver-base': 1003.0.1
|
||||
'@pnpm/tarball-fetcher': 1001.0.8(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/types': 1000.6.0
|
||||
ramda: '@pnpm/ramda@0.28.1'
|
||||
transitivePeerDependencies:
|
||||
- '@pnpm/logger'
|
||||
- '@pnpm/worker'
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/colorize-semver-diff@1.0.1':
|
||||
dependencies:
|
||||
chalk: 4.1.2
|
||||
@@ -16710,28 +16672,6 @@ snapshots:
|
||||
- domexception
|
||||
- supports-color
|
||||
|
||||
'@pnpm/config.deps-installer@1000.0.5(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))':
|
||||
dependencies:
|
||||
'@pnpm/config.config-writer': 1000.0.5
|
||||
'@pnpm/core-loggers': 1001.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/fetch': 1000.2.2(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/network.auth-header': 1000.0.3
|
||||
'@pnpm/npm-resolver': 1004.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/package-store': 1002.0.4(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))
|
||||
'@pnpm/parse-wanted-dependency': 1001.0.0
|
||||
'@pnpm/pick-registry-for-package': 1000.0.8
|
||||
'@pnpm/read-modules-dir': 1000.0.0
|
||||
'@pnpm/read-package-json': 1000.0.9
|
||||
'@pnpm/types': 1000.6.0
|
||||
'@zkochan/rimraf': 3.0.2
|
||||
get-npm-tarball-url: 2.1.0
|
||||
transitivePeerDependencies:
|
||||
- '@pnpm/worker'
|
||||
- domexception
|
||||
- supports-color
|
||||
|
||||
'@pnpm/config.env-replace@1.1.0': {}
|
||||
|
||||
'@pnpm/config.env-replace@3.0.1': {}
|
||||
@@ -17041,19 +16981,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/git-fetcher@1001.0.8(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/fetcher-base': 1000.0.11
|
||||
'@pnpm/fs.packlist': 2.0.0
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/prepare-package': 1000.0.16(@pnpm/logger@1001.0.0)(typanion@3.14.0)
|
||||
'@pnpm/worker': 1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)
|
||||
'@zkochan/rimraf': 3.0.2
|
||||
execa: safe-execa@0.1.2
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/git-resolver@1001.0.2(@pnpm/logger@1001.0.0)':
|
||||
dependencies:
|
||||
'@pnpm/fetch': 1000.2.2(@pnpm/logger@1001.0.0)
|
||||
@@ -17200,24 +17127,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/meta-updater@2.0.6(@types/node@22.15.29)(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/find-workspace-dir': 1000.1.0
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/types': 1000.6.0
|
||||
'@pnpm/worker': 1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)
|
||||
'@pnpm/workspace.find-packages': 1000.0.25(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/workspace.read-manifest': 1000.1.5
|
||||
load-json-file: 7.0.1
|
||||
meow: 11.0.0
|
||||
print-diff: 2.0.0
|
||||
write-json-file: 5.0.0
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/network.agent@2.0.3':
|
||||
dependencies:
|
||||
'@pnpm/network.config': 2.1.0
|
||||
@@ -17398,30 +17307,6 @@ snapshots:
|
||||
semver: 7.7.2
|
||||
ssri: 10.0.5
|
||||
|
||||
'@pnpm/package-requester@1004.0.2(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))':
|
||||
dependencies:
|
||||
'@pnpm/core-loggers': 1001.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/dependency-path': 1000.0.9
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/fetcher-base': 1000.0.11
|
||||
'@pnpm/graceful-fs': 1000.0.0
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/package-is-installable': 1000.0.10(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/pick-fetcher': 1000.0.0
|
||||
'@pnpm/read-package-json': 1000.0.9
|
||||
'@pnpm/resolver-base': 1003.0.1
|
||||
'@pnpm/store-controller-types': 1003.0.2
|
||||
'@pnpm/store.cafs': 1000.0.13
|
||||
'@pnpm/types': 1000.6.0
|
||||
'@pnpm/worker': 1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)
|
||||
p-defer: 3.0.0
|
||||
p-limit: 3.1.0
|
||||
p-queue: 6.6.2
|
||||
promise-share: 1.0.0
|
||||
ramda: '@pnpm/ramda@0.28.1'
|
||||
semver: 7.7.2
|
||||
ssri: 10.0.5
|
||||
|
||||
'@pnpm/package-store@1002.0.4(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@18.19.34))':
|
||||
dependencies:
|
||||
'@pnpm/create-cafs-store': 1000.0.14(@pnpm/logger@1001.0.0)
|
||||
@@ -17438,22 +17323,6 @@ snapshots:
|
||||
ramda: '@pnpm/ramda@0.28.1'
|
||||
ssri: 10.0.5
|
||||
|
||||
'@pnpm/package-store@1002.0.4(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))':
|
||||
dependencies:
|
||||
'@pnpm/create-cafs-store': 1000.0.14(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/fetcher-base': 1000.0.11
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/package-requester': 1004.0.2(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))
|
||||
'@pnpm/resolver-base': 1003.0.1
|
||||
'@pnpm/store-controller-types': 1003.0.2
|
||||
'@pnpm/store.cafs': 1000.0.13
|
||||
'@pnpm/types': 1000.6.0
|
||||
'@pnpm/worker': 1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)
|
||||
'@zkochan/rimraf': 3.0.2
|
||||
load-json-file: 6.2.0
|
||||
ramda: '@pnpm/ramda@0.28.1'
|
||||
ssri: 10.0.5
|
||||
|
||||
'@pnpm/parse-overrides@1000.0.2':
|
||||
dependencies:
|
||||
'@pnpm/catalogs.resolver': 1000.0.2
|
||||
@@ -17580,7 +17449,7 @@ snapshots:
|
||||
read-yaml-file: 2.1.0
|
||||
strip-bom: 4.0.0
|
||||
|
||||
'@pnpm/registry-mock@4.5.0(encoding@0.1.13)(typanion@3.14.0)':
|
||||
'@pnpm/registry-mock@4.6.0(encoding@0.1.13)(typanion@3.14.0)':
|
||||
dependencies:
|
||||
anonymous-npm-registry-client: 0.3.2
|
||||
execa: 5.1.1
|
||||
@@ -17670,25 +17539,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/store-connection-manager@1002.0.3(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/cli-meta': 1000.0.8
|
||||
'@pnpm/client': 1000.0.19(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/config': 1003.1.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/package-store': 1002.0.4(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))
|
||||
'@pnpm/server': 1001.0.4(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/store-path': 1000.0.2
|
||||
'@zkochan/diable': 1.0.2
|
||||
delay: 5.0.0
|
||||
dir-is-case-sensitive: 2.0.0
|
||||
transitivePeerDependencies:
|
||||
- '@pnpm/worker'
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/store-controller-types@1001.0.3':
|
||||
dependencies:
|
||||
'@pnpm/fetcher-base': 1000.0.5
|
||||
@@ -17762,28 +17612,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/tarball-fetcher@1001.0.8(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/core-loggers': 1001.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/fetcher-base': 1000.0.11
|
||||
'@pnpm/fetching-types': 1000.1.0
|
||||
'@pnpm/fs.packlist': 2.0.0
|
||||
'@pnpm/graceful-fs': 1000.0.0
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/prepare-package': 1000.0.16(@pnpm/logger@1001.0.0)(typanion@3.14.0)
|
||||
'@pnpm/worker': 1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)
|
||||
'@zkochan/retry': 0.2.0
|
||||
lodash.throttle: 4.1.1
|
||||
p-map-values: 1.0.0
|
||||
path-temp: 2.1.0
|
||||
ramda: '@pnpm/ramda@0.28.1'
|
||||
rename-overwrite: 6.0.3
|
||||
transitivePeerDependencies:
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/tarball-resolver@1002.0.2':
|
||||
dependencies:
|
||||
'@pnpm/fetching-types': 1000.1.0
|
||||
@@ -17831,26 +17659,6 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
'@pnpm/worker@1000.1.7(@pnpm/logger@packages+logger)(@types/node@22.15.29)':
|
||||
dependencies:
|
||||
'@pnpm/cafs-types': 1000.0.0
|
||||
'@pnpm/create-cafs-store': 1000.0.14(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/crypto.polyfill': 1000.1.0
|
||||
'@pnpm/error': 1000.0.2
|
||||
'@pnpm/exec.pkg-requires-build': 1000.0.8
|
||||
'@pnpm/fs.hard-link-dir': 1000.0.1(@pnpm/logger@1001.0.0)
|
||||
'@pnpm/graceful-fs': 1000.0.0
|
||||
'@pnpm/logger': link:packages/logger
|
||||
'@pnpm/store.cafs': 1000.0.13
|
||||
'@pnpm/symlink-dependency': 1000.0.9(@pnpm/logger@1001.0.0)
|
||||
'@rushstack/worker-pool': 0.4.9(@types/node@22.15.29)
|
||||
is-windows: 1.0.2
|
||||
load-json-file: 6.2.0
|
||||
p-limit: 3.1.0
|
||||
shell-quote: 1.8.3
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
|
||||
'@pnpm/workspace.find-packages@1000.0.15(@pnpm/logger@1000.0.0)':
|
||||
dependencies:
|
||||
'@pnpm/cli-utils': 1000.0.15(@pnpm/logger@1000.0.0)
|
||||
@@ -17874,20 +17682,6 @@ snapshots:
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/workspace.find-packages@1000.0.25(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)':
|
||||
dependencies:
|
||||
'@pnpm/cli-utils': 1000.1.5(@pnpm/logger@1001.0.0)(@pnpm/worker@1000.1.7(@pnpm/logger@1001.0.0)(@types/node@22.15.29))(typanion@3.14.0)
|
||||
'@pnpm/constants': 1001.1.0
|
||||
'@pnpm/fs.find-packages': 1000.0.11
|
||||
'@pnpm/logger': 1001.0.0
|
||||
'@pnpm/types': 1000.6.0
|
||||
'@pnpm/util.lex-comparator': 3.0.2
|
||||
transitivePeerDependencies:
|
||||
- '@pnpm/worker'
|
||||
- domexception
|
||||
- supports-color
|
||||
- typanion
|
||||
|
||||
'@pnpm/workspace.manifest-writer@1000.1.4':
|
||||
dependencies:
|
||||
'@pnpm/constants': 1001.1.0
|
||||
|
||||
@@ -61,7 +61,7 @@ catalog:
|
||||
'@pnpm/npm-package-arg': ^1.0.0
|
||||
'@pnpm/os.env.path-extender': ^2.0.3
|
||||
'@pnpm/patch-package': 0.0.1
|
||||
'@pnpm/registry-mock': 4.5.0
|
||||
'@pnpm/registry-mock': 4.6.0
|
||||
'@pnpm/semver-diff': ^1.1.0
|
||||
'@pnpm/tabtab': ^0.5.4
|
||||
'@pnpm/util.lex-comparator': ^3.0.2
|
||||
|
||||
@@ -367,3 +367,14 @@ module.exports = {
|
||||
expect(nodeModulesFiles).toContain('is-number')
|
||||
expect(nodeModulesFiles).toContain('is-even')
|
||||
})
|
||||
|
||||
test('automatically loading pnpmfile from a config dependency that has a name that starts with "@pnpm/plugin-"', async () => {
|
||||
prepare()
|
||||
|
||||
await execPnpm(['add', '--config', '@pnpm/plugin-pnpmfile'])
|
||||
await execPnpm(['add', 'is-odd@1.0.0'])
|
||||
|
||||
const nodeModulesFiles = fs.readdirSync('node_modules')
|
||||
expect(nodeModulesFiles).toContain('kind-of')
|
||||
expect(nodeModulesFiles).toContain('is-number')
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user