mirror of
https://github.com/pnpm/pnpm.git
synced 2026-04-29 03:26:25 -04:00
feat!: use the same lockfile format in 1-pkg workspace as in multi-pkg one (#7696)
This commit is contained in:
4
__fixtures__/empty/pnpm-lock.yaml
generated
4
__fixtures__/empty/pnpm-lock.yaml
generated
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
18
__fixtures__/has-2-outdated-deps/node_modules/.pnpm/lock.yaml
generated
vendored
18
__fixtures__/has-2-outdated-deps/node_modules/.pnpm/lock.yaml
generated
vendored
@@ -1,14 +1,16 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.1
|
||||
importers:
|
||||
|
||||
devDependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
.:
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.1
|
||||
devDependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
4
__fixtures__/local-pkg/pnpm-lock.yaml
generated
4
__fixtures__/local-pkg/pnpm-lock.yaml
generated
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
4
__fixtures__/local-scoped-pkg/pnpm-lock.yaml
generated
4
__fixtures__/local-scoped-pkg/pnpm-lock.yaml
generated
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
4
__fixtures__/pnpm-lock.yaml
generated
4
__fixtures__/pnpm-lock.yaml
generated
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
4
__fixtures__/tar-pkg/pnpm-lock.yaml
generated
4
__fixtures__/tar-pkg/pnpm-lock.yaml
generated
@@ -1 +1,5 @@
|
||||
lockfileVersion: '7.0'
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
11
__fixtures__/with-git-protocol-dep/pnpm-lock.yaml
generated
11
__fixtures__/with-git-protocol-dep/pnpm-lock.yaml
generated
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: github:kevva/is-negative#master
|
||||
version: github.com/kevva/is-negative/219c424611ff4a2af15f7deeff4f93c62558c43d
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: github:kevva/is-negative#master
|
||||
version: github.com/kevva/is-negative/219c424611ff4a2af15f7deeff4f93c62558c43d
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ export type StrictRebuildOptions = {
|
||||
storeDir: string // TODO: remove this property
|
||||
storeController: StoreController
|
||||
force: boolean
|
||||
forceSharedLockfile: boolean
|
||||
useLockfile: boolean
|
||||
registries: Registries
|
||||
dir: string
|
||||
@@ -63,7 +62,6 @@ const defaults = async (opts: RebuildOptions) => {
|
||||
development: true,
|
||||
dir,
|
||||
force: false,
|
||||
forceSharedLockfile: false,
|
||||
lockfileDir,
|
||||
nodeLinker: 'isolated',
|
||||
optional: true,
|
||||
|
||||
@@ -31,21 +31,17 @@ export async function writeWantedLockfile (
|
||||
pkgPath: string,
|
||||
wantedLockfile: Lockfile,
|
||||
opts?: {
|
||||
forceSharedFormat?: boolean
|
||||
useGitBranchLockfile?: boolean
|
||||
mergeGitBranchLockfiles?: boolean
|
||||
}
|
||||
) {
|
||||
const wantedLockfileName: string = await getWantedLockfileName(opts)
|
||||
return writeLockfile(wantedLockfileName, pkgPath, wantedLockfile, opts)
|
||||
return writeLockfile(wantedLockfileName, pkgPath, wantedLockfile)
|
||||
}
|
||||
|
||||
export async function writeCurrentLockfile (
|
||||
virtualStoreDir: string,
|
||||
currentLockfile: Lockfile,
|
||||
opts?: {
|
||||
forceSharedFormat?: boolean
|
||||
}
|
||||
currentLockfile: Lockfile
|
||||
) {
|
||||
// empty lockfile is not saved
|
||||
if (isEmptyLockfile(currentLockfile)) {
|
||||
@@ -53,23 +49,18 @@ export async function writeCurrentLockfile (
|
||||
return
|
||||
}
|
||||
await fs.mkdir(virtualStoreDir, { recursive: true })
|
||||
return writeLockfile('lock.yaml', virtualStoreDir, currentLockfile, opts)
|
||||
}
|
||||
|
||||
interface LockfileFormatOptions {
|
||||
forceSharedFormat?: boolean
|
||||
return writeLockfile('lock.yaml', virtualStoreDir, currentLockfile)
|
||||
}
|
||||
|
||||
async function writeLockfile (
|
||||
lockfileFilename: string,
|
||||
pkgPath: string,
|
||||
wantedLockfile: Lockfile,
|
||||
opts?: LockfileFormatOptions
|
||||
wantedLockfile: Lockfile
|
||||
) {
|
||||
const lockfilePath = path.join(pkgPath, lockfileFilename)
|
||||
|
||||
const lockfileToStringify = convertToLockfileFile(wantedLockfile, {
|
||||
forceSharedFormat: opts?.forceSharedFormat === true,
|
||||
forceSharedFormat: true,
|
||||
})
|
||||
|
||||
const yamlDoc = yamlStringify(lockfileToStringify)
|
||||
@@ -88,7 +79,6 @@ export function isEmptyLockfile (lockfile: Lockfile) {
|
||||
|
||||
export async function writeLockfiles (
|
||||
opts: {
|
||||
forceSharedFormat?: boolean
|
||||
wantedLockfile: Lockfile
|
||||
wantedLockfileDir: string
|
||||
currentLockfile: Lockfile
|
||||
@@ -101,9 +91,8 @@ export async function writeLockfiles (
|
||||
const wantedLockfilePath = path.join(opts.wantedLockfileDir, wantedLockfileName)
|
||||
const currentLockfilePath = path.join(opts.currentLockfileDir, 'lock.yaml')
|
||||
|
||||
const forceSharedFormat = opts?.forceSharedFormat === true
|
||||
const normalizeOpts = {
|
||||
forceSharedFormat,
|
||||
forceSharedFormat: true,
|
||||
}
|
||||
const wantedLockfileToStringify = convertToLockfileFile(opts.wantedLockfile, normalizeOpts)
|
||||
const yamlDoc = yamlStringify(wantedLockfileToStringify)
|
||||
|
||||
@@ -3,13 +3,16 @@
|
||||
exports[`writeLockfiles() 1`] = `
|
||||
"lockfileVersion: '7.0'
|
||||
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
is-negative:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
@@ -31,7 +31,6 @@ export async function getPeerDependencyIssues (
|
||||
const lockfileDir = opts.lockfileDir ?? process.cwd()
|
||||
const ctx = await getContext({
|
||||
force: false,
|
||||
forceSharedLockfile: false,
|
||||
extraBinPaths: [],
|
||||
lockfileDir,
|
||||
nodeLinker: opts.nodeLinker ?? 'isolated',
|
||||
|
||||
@@ -23,7 +23,6 @@ import { type PreResolutionHookContext } from '@pnpm/hooks.types'
|
||||
export interface StrictInstallOptions {
|
||||
autoInstallPeers: boolean
|
||||
autoInstallPeersFromHighestMatch: boolean
|
||||
forceSharedLockfile: boolean
|
||||
frozenLockfile: boolean
|
||||
frozenLockfileIfExists: boolean
|
||||
enablePnp: boolean
|
||||
@@ -171,7 +170,6 @@ const defaults = (opts: InstallOptions) => {
|
||||
engineStrict: false,
|
||||
force: false,
|
||||
forceFullResolution: false,
|
||||
forceSharedLockfile: false,
|
||||
frozenLockfile: false,
|
||||
hoistPattern: undefined,
|
||||
publicHoistPattern: undefined,
|
||||
|
||||
@@ -474,7 +474,6 @@ Note that in CI environments, this setting is enabled by default.`,
|
||||
currentLockfileDir: ctx.virtualStoreDir,
|
||||
wantedLockfile: ctx.wantedLockfile,
|
||||
wantedLockfileDir: ctx.lockfileDir,
|
||||
forceSharedFormat: opts.forceSharedLockfile,
|
||||
useGitBranchLockfile: opts.useGitBranchLockfile,
|
||||
mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
|
||||
})
|
||||
@@ -1080,8 +1079,6 @@ const _installInContext: InstallFunction = async (projects, ctx, opts) => {
|
||||
|
||||
const depsStateCache: DepsStateCache = {}
|
||||
const lockfileOpts = {
|
||||
forceSharedFormat: opts.forceSharedLockfile,
|
||||
useInlineSpecifiersFormat: true,
|
||||
useGitBranchLockfile: opts.useGitBranchLockfile,
|
||||
mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
|
||||
}
|
||||
@@ -1269,7 +1266,7 @@ const _installInContext: InstallFunction = async (projects, ctx, opts) => {
|
||||
wantedLockfileDir: ctx.lockfileDir,
|
||||
...lockfileOpts,
|
||||
})
|
||||
: writeCurrentLockfile(ctx.virtualStoreDir, result.currentLockfile, lockfileOpts),
|
||||
: writeCurrentLockfile(ctx.virtualStoreDir, result.currentLockfile),
|
||||
(async () => {
|
||||
if (result.currentLockfile.packages === undefined && result.removedDepPaths.size === 0) {
|
||||
return Promise.resolve()
|
||||
|
||||
@@ -137,7 +137,7 @@ export async function link (
|
||||
} else {
|
||||
newPkg = opts.manifest
|
||||
}
|
||||
const lockfileOpts = { forceSharedFormat: opts.forceSharedLockfile, useGitBranchLockfile: opts.useGitBranchLockfile, mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles }
|
||||
const lockfileOpts = { useGitBranchLockfile: opts.useGitBranchLockfile, mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles }
|
||||
if (opts.useLockfile) {
|
||||
await writeLockfiles({
|
||||
currentLockfile: updatedCurrentLockfile,
|
||||
@@ -147,7 +147,7 @@ export async function link (
|
||||
...lockfileOpts,
|
||||
})
|
||||
} else {
|
||||
await writeCurrentLockfile(ctx.virtualStoreDir, updatedCurrentLockfile, lockfileOpts)
|
||||
await writeCurrentLockfile(ctx.virtualStoreDir, updatedCurrentLockfile)
|
||||
}
|
||||
|
||||
summaryLogger.debug({ prefix: opts.dir })
|
||||
|
||||
@@ -13,7 +13,6 @@ interface StrictLinkOptions {
|
||||
binsDir: string
|
||||
excludeLinksFromLockfile: boolean
|
||||
force: boolean
|
||||
forceSharedLockfile: boolean
|
||||
useLockfile: boolean
|
||||
lockfileDir: string
|
||||
nodeLinker: 'isolated' | 'hoisted' | 'pnp'
|
||||
@@ -61,7 +60,6 @@ async function defaults (opts: LinkOptions) {
|
||||
binsDir: path.join(dir, 'node_modules', '.bin'),
|
||||
dir,
|
||||
force: false,
|
||||
forceSharedLockfile: false,
|
||||
hoistPattern: undefined,
|
||||
lockfileDir: opts.lockfileDir ?? dir,
|
||||
nodeLinker: 'isolated',
|
||||
|
||||
@@ -100,7 +100,7 @@ test('uninstall package with dependencies and do not touch other deps', async ()
|
||||
expect(manifest.dependencies).toStrictEqual({ 'is-negative': '2.1.0' })
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'is-negative': {
|
||||
specifier: '2.1.0',
|
||||
version: '2.1.0',
|
||||
|
||||
@@ -17,14 +17,18 @@ test('installing aliased dependency', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
negative: {
|
||||
specifier: 'npm:is-negative@1.0.0',
|
||||
version: '/is-negative@1.0.0',
|
||||
},
|
||||
positive: {
|
||||
specifier: 'npm:is-positive@^3.1.0',
|
||||
version: '/is-positive@3.1.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
negative: {
|
||||
specifier: 'npm:is-negative@1.0.0',
|
||||
version: '/is-negative@1.0.0',
|
||||
},
|
||||
positive: {
|
||||
specifier: 'npm:is-positive@^3.1.0',
|
||||
version: '/is-positive@3.1.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -78,10 +82,14 @@ test('a dependency has an aliased subdependency', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'@pnpm.e2e/pkg-with-1-aliased-dep': {
|
||||
specifier: '^100.0.0',
|
||||
version: '100.0.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'@pnpm.e2e/pkg-with-1-aliased-dep': {
|
||||
specifier: '^100.0.0',
|
||||
version: '100.0.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
|
||||
@@ -197,7 +197,7 @@ test('automatically install root peer dependencies', async () => {
|
||||
|
||||
{
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'is-positive': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
@@ -225,7 +225,7 @@ test('automatically install root peer dependencies', async () => {
|
||||
|
||||
{
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'is-odd': {
|
||||
specifier: '1.0.0',
|
||||
version: '1.0.0',
|
||||
@@ -254,7 +254,7 @@ test('automatically install root peer dependencies', async () => {
|
||||
|
||||
{
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'is-positive': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
@@ -600,5 +600,5 @@ test('do not override the direct dependency with an auto installed peer dependen
|
||||
},
|
||||
}))
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies.rxjs.version).toStrictEqual('6.6.7')
|
||||
expect(lockfile.importers['.'].dependencies?.rxjs.version).toStrictEqual('6.6.7')
|
||||
})
|
||||
|
||||
@@ -68,7 +68,7 @@ test('from a github repo with different name via named installation', async () =
|
||||
expect(manifest.dependencies).toStrictEqual({ 'say-hi': 'github:zkochan/hi#4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd' })
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'say-hi': {
|
||||
specifier: 'github:zkochan/hi#4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd',
|
||||
version: 'github.com/zkochan/hi/4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd',
|
||||
@@ -111,7 +111,7 @@ test('from a github repo with different name', async () => {
|
||||
})
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'say-hi': {
|
||||
specifier: 'github:zkochan/hi#4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd',
|
||||
version: 'github.com/zkochan/hi/4cdebec76b7b9d1f6e219e06c42d92a6b8ea60cd',
|
||||
@@ -248,7 +248,7 @@ test('re-adding a git repo with a different tag', async () => {
|
||||
})
|
||||
expect(JSON.parse(fs.readFileSync('./node_modules/is-negative/package.json', 'utf8')).version).toBe('1.0.0')
|
||||
let lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['is-negative']).toEqual({
|
||||
expect(lockfile.importers['.'].dependencies?.['is-negative']).toEqual({
|
||||
specifier: 'github:kevva/is-negative#1.0.0',
|
||||
version: 'github.com/kevva/is-negative/163360a8d3ae6bee9524541043197ff356f8ed99',
|
||||
})
|
||||
@@ -267,7 +267,7 @@ test('re-adding a git repo with a different tag', async () => {
|
||||
project.has('is-negative')
|
||||
expect(JSON.parse(fs.readFileSync('./node_modules/is-negative/package.json', 'utf8')).version).toBe('1.0.1')
|
||||
lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['is-negative']).toEqual({
|
||||
expect(lockfile.importers['.'].dependencies?.['is-negative']).toEqual({
|
||||
specifier: 'github:kevva/is-negative#1.0.1',
|
||||
version: 'github.com/kevva/is-negative/9a89df745b2ec20ae7445d3d9853ceaeef5b0b72',
|
||||
})
|
||||
@@ -303,7 +303,7 @@ test('should not update when adding unrelated dependency', async () => {
|
||||
const project = assertProject(withGitProtocolDepFixture)
|
||||
project.has('is-number')
|
||||
expect(fs.existsSync('./node_modules/.pnpm/github.com+kevva+is-negative+219c424611ff4a2af15f7deeff4f93c62558c43d')).toBe(true)
|
||||
expect((project.readLockfile()).dependencies).toEqual({
|
||||
expect(project.readLockfile().importers['.'].dependencies).toEqual({
|
||||
'is-negative': {
|
||||
specifier: 'github:kevva/is-negative#master',
|
||||
version: 'github.com/kevva/is-negative/219c424611ff4a2af15f7deeff4f93c62558c43d',
|
||||
|
||||
@@ -183,14 +183,18 @@ test('install with --merge-git-branch-lockfiles when merged lockfile is up to da
|
||||
// is-positive installed in the other branch
|
||||
const otherLockfilePath: string = path.resolve('pnpm-lock.other.yaml')
|
||||
const otherLockfileContent = {
|
||||
dependencies: {
|
||||
'@types/semver': {
|
||||
specifier: '5.3.31',
|
||||
version: '5.3.31',
|
||||
},
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'@types/semver': {
|
||||
specifier: '5.3.31',
|
||||
version: '5.3.31',
|
||||
},
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
|
||||
@@ -49,10 +49,14 @@ test('local file', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -107,10 +111,14 @@ test('local file via link:', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -139,10 +147,14 @@ test('local file with symlinked node_modules', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'link:../local-pkg',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -170,7 +182,7 @@ test('tarball local package', async () => {
|
||||
expect(manifest.dependencies).toStrictEqual({ 'tar-pkg': pkgSpec })
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.packages[lockfile.dependencies['tar-pkg'].version]).toStrictEqual({
|
||||
expect(lockfile.packages[lockfile.importers['.'].dependencies!['tar-pkg'].version]).toStrictEqual({
|
||||
dev: false,
|
||||
name: 'tar-pkg',
|
||||
resolution: {
|
||||
@@ -200,8 +212,8 @@ test('tarball local package from project directory', async () => {
|
||||
expect(manifest.dependencies).toStrictEqual({ 'tar-pkg': pkgSpec })
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['tar-pkg'].version).toBe(pkgSpec)
|
||||
expect(lockfile.packages[lockfile.dependencies['tar-pkg'].version]).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies?.['tar-pkg'].version).toBe(pkgSpec)
|
||||
expect(lockfile.packages[lockfile.importers['.'].dependencies!['tar-pkg'].version]).toStrictEqual({
|
||||
dev: false,
|
||||
name: 'tar-pkg',
|
||||
resolution: {
|
||||
@@ -404,10 +416,14 @@ test('re-install should update local file dependency', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'file:../local-pkg',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'local-pkg': {
|
||||
specifier: expectedSpecs['local-pkg'],
|
||||
version: 'file:../local-pkg',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
packages: {
|
||||
|
||||
@@ -28,7 +28,7 @@ test('install with lockfileOnly = true', async () => {
|
||||
expect(manifest.dependencies!['@pnpm.e2e/pkg-with-1-dep']).toBeTruthy()
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/pkg-with-1-dep']).toBeTruthy()
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/pkg-with-1-dep']).toBeTruthy()
|
||||
expect(lockfile.packages['/@pnpm.e2e/pkg-with-1-dep@100.0.0']).toBeTruthy()
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
@@ -68,7 +68,7 @@ test('warn when installing with lockfileOnly = true and node_modules exists', as
|
||||
expect(manifest.dependencies!.rimraf).toBeTruthy()
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies.rimraf).toBeTruthy()
|
||||
expect(lockfile.importers['.'].dependencies?.rimraf).toBeTruthy()
|
||||
expect(lockfile.packages['/rimraf@2.5.1']).toBeTruthy()
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
|
||||
@@ -44,7 +44,7 @@ test('spec not specified in package.json.dependencies', async () => {
|
||||
}, testDefaults())
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['is-positive'].specifier).toBe('')
|
||||
expect(lockfile.importers['.'].dependencies?.['is-positive'].specifier).toBe('')
|
||||
})
|
||||
|
||||
test.skip('ignoring some files in the dependency', async () => {
|
||||
|
||||
@@ -55,7 +55,7 @@ test('skip non-existing optional dependency', async () => {
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.dependencies['is-positive'].specifier).toBe('1.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['is-positive'].specifier).toBe('1.0.0')
|
||||
})
|
||||
|
||||
test('skip optional dependency that does not support the current OS', async () => {
|
||||
|
||||
@@ -1674,7 +1674,7 @@ test('resolve peer of peer from the dependencies of the direct dependent package
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.dependencies['@pnpm.e2e/has-has-y-peer-only-as-peer-and-y'].version).toBe('1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/has-has-y-peer-only-as-peer-and-y'].version).toBe('1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))')
|
||||
// Even though @pnpm/y@1.0.0 is in the dependencies of the direct dependent package, we resolve y from above.
|
||||
// It might make sense to print a warning in this case and suggest to make y a peer dependency in the dependent package too.
|
||||
expect(lockfile.packages['/@pnpm.e2e/has-has-y-peer-only-as-peer-and-y@1.0.0(@pnpm.e2e/has-y-peer@1.0.0(@pnpm/y@2.0.0))'].dependencies?.['@pnpm.e2e/has-y-peer']).toBe('1.0.0(@pnpm/y@2.0.0)')
|
||||
@@ -1686,8 +1686,8 @@ test('2 circular peers', async () => {
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.dependencies['@pnpm.e2e/circular-peer-a'].version).toBe('1.0.0(@pnpm.e2e/circular-peer-b@1.0.0)')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/circular-peer-b'].version).toBe('1.0.0(@pnpm.e2e/circular-peer-a@1.0.0)')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/circular-peer-a'].version).toBe('1.0.0(@pnpm.e2e/circular-peer-b@1.0.0)')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/circular-peer-b'].version).toBe('1.0.0(@pnpm.e2e/circular-peer-a@1.0.0)')
|
||||
})
|
||||
|
||||
test('3 circular peers', async () => {
|
||||
@@ -1701,9 +1701,9 @@ test('3 circular peers', async () => {
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.dependencies['@pnpm.e2e/circular-peers-1-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-2-of-3@1.0.0)(@pnpm.e2e/peer-a@1.0.0)')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/circular-peers-2-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-3-of-3@1.0.0)(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-b@1.0.0)')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/circular-peers-3-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-1-of-3@1.0.0)')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/circular-peers-1-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-2-of-3@1.0.0)(@pnpm.e2e/peer-a@1.0.0)')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/circular-peers-2-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-3-of-3@1.0.0)(@pnpm.e2e/peer-a@1.0.0)(@pnpm.e2e/peer-b@1.0.0)')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/circular-peers-3-of-3'].version).toBe('1.0.0(@pnpm.e2e/circular-peers-1-of-3@1.0.0)')
|
||||
})
|
||||
|
||||
test('3 circular peers in workspace root', async () => {
|
||||
|
||||
@@ -74,10 +74,10 @@ test('dependency should not be added to package.json if it is already there', as
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.devDependencies['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers['.'].devDependencies?.['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
expect(lockfile.packages['/@pnpm.e2e/foo@100.0.0'].dev).toBeTruthy()
|
||||
|
||||
expect(lockfile.optionalDependencies['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers['.'].optionalDependencies?.['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile.packages['/@pnpm.e2e/bar@100.0.0'].optional).toBeTruthy()
|
||||
})
|
||||
|
||||
@@ -151,7 +151,7 @@ test('dependency should be removed from the old field when installing it as a di
|
||||
|
||||
{
|
||||
const lockfile = project.readCurrentLockfile()
|
||||
expect(Object.keys(lockfile.dependencies)).toStrictEqual(['@pnpm.e2e/bar', '@pnpm.e2e/foo', '@pnpm.e2e/qar'])
|
||||
expect(Object.keys(lockfile.importers['.'].dependencies ?? {})).toStrictEqual(['@pnpm.e2e/bar', '@pnpm.e2e/foo', '@pnpm.e2e/qar'])
|
||||
}
|
||||
|
||||
// manually editing package.json. Converting all prod deps to dev deps
|
||||
@@ -163,7 +163,7 @@ test('dependency should be removed from the old field when installing it as a di
|
||||
|
||||
{
|
||||
const lockfile = project.readCurrentLockfile()
|
||||
expect(Object.keys(lockfile.devDependencies)).toStrictEqual(['@pnpm.e2e/bar', '@pnpm.e2e/foo', '@pnpm.e2e/qar'])
|
||||
expect(Object.keys(lockfile.importers['.'].devDependencies ?? {})).toStrictEqual(['@pnpm.e2e/bar', '@pnpm.e2e/foo', '@pnpm.e2e/qar'])
|
||||
expect(lockfile.dependencies).toBeFalsy()
|
||||
}
|
||||
})
|
||||
|
||||
@@ -35,13 +35,13 @@ test('relative link', async () => {
|
||||
project.isExecutable('.bin/hello-world-js-bin')
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.dependencies['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
expect(wantedLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
version: 'link:../hello-world-js-bin',
|
||||
specifier: '*',
|
||||
})
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
expect(currentLockfile.dependencies['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
expect(currentLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
version: 'link:../hello-world-js-bin',
|
||||
specifier: '*',
|
||||
})
|
||||
@@ -66,7 +66,7 @@ test('relative link is linked by the name of the alias', async () => {
|
||||
project.has('hello')
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.dependencies).toStrictEqual({
|
||||
expect(wantedLockfile.importers['.'].dependencies).toStrictEqual({
|
||||
hello: {
|
||||
specifier: 'link:../hello-world-js-bin',
|
||||
version: 'link:../hello-world-js-bin',
|
||||
@@ -154,10 +154,10 @@ test('relative link is rewritten by named installation to regular dependency', a
|
||||
expect(project.requireModule('@pnpm.e2e/hello-world-js-bin/package.json').isLocal).toBeFalsy()
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.dependencies['@pnpm.e2e/hello-world-js-bin'].version).toBe('1.0.0')
|
||||
expect(wantedLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin'].version).toBe('1.0.0')
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
expect(currentLockfile.dependencies['@pnpm.e2e/hello-world-js-bin'].version).toBe('1.0.0')
|
||||
expect(currentLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin'].version).toBe('1.0.0')
|
||||
})
|
||||
|
||||
test('relative link uses realpath when contained in a symlinked dir', async () => {
|
||||
@@ -237,7 +237,7 @@ test('link should not change the type of the dependency', async () => {
|
||||
project.isExecutable('.bin/hello-world-js-bin')
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.devDependencies).toStrictEqual({
|
||||
expect(wantedLockfile.importers['.'].devDependencies).toStrictEqual({
|
||||
'@pnpm.e2e/hello-world-js-bin': {
|
||||
version: 'link:../hello-world-js-bin',
|
||||
specifier: '*',
|
||||
|
||||
@@ -54,10 +54,10 @@ test('lockfile has correct format', async () => {
|
||||
|
||||
expect(lockfile.lockfileVersion).toBe(LOCKFILE_VERSION)
|
||||
|
||||
expect(lockfile.dependencies).toBeTruthy()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.dependencies).toHaveProperty(['@rstacruz/tap-spec'])
|
||||
expect(lockfile.dependencies['is-negative'].version).toContain('/') // has not shortened tarball from the non-standard registry
|
||||
expect(lockfile.importers?.['.'].dependencies).toBeTruthy()
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers?.['.'].dependencies).toHaveProperty(['@rstacruz/tap-spec'])
|
||||
expect(lockfile.importers?.['.'].dependencies?.['is-negative'].version).toContain('/') // has not shortened tarball from the non-standard registry
|
||||
|
||||
expect(lockfile.packages).toBeTruthy() // has packages field
|
||||
expect(lockfile.packages).toHaveProperty([id])
|
||||
@@ -84,9 +84,9 @@ test('lockfile has dev deps even when installing for prod only', async () => {
|
||||
const lockfile = project.readLockfile()
|
||||
const id = '/is-negative@2.1.0'
|
||||
|
||||
expect(lockfile.devDependencies).toBeTruthy()
|
||||
expect(lockfile.importers['.'].devDependencies).toBeTruthy()
|
||||
|
||||
expect(lockfile.devDependencies['is-negative'].version).toBe('2.1.0')
|
||||
expect(lockfile.importers['.'].devDependencies?.['is-negative'].version).toBe('2.1.0')
|
||||
|
||||
expect(lockfile.packages[id]).toBeTruthy()
|
||||
})
|
||||
@@ -142,7 +142,7 @@ test("lockfile doesn't lock subdependencies that don't satisfy the new specs", a
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(Object.keys(lockfile.dependencies).length).toBe(1) // resolutions not duplicated
|
||||
expect(Object.keys(lockfile.importers!['.'].dependencies!).length).toBe(1) // resolutions not duplicated
|
||||
})
|
||||
|
||||
test('a lockfile created even when there are no deps in package.json', async () => {
|
||||
@@ -236,9 +236,9 @@ test('lockfile is fixed when it does not match package.json', async () => {
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
|
||||
expect(lockfile.devDependencies['is-negative'].version).toBe('2.1.0')
|
||||
expect(lockfile.optionalDependencies['is-positive'].version).toBe('3.1.0')
|
||||
expect(lockfile.dependencies).toBeFalsy()
|
||||
expect(lockfile.importers?.['.'].devDependencies?.['is-negative'].version).toBe('2.1.0')
|
||||
expect(lockfile.importers?.['.'].optionalDependencies?.['is-positive'].version).toBe('3.1.0')
|
||||
expect(lockfile.importers?.['.'].dependencies).toBeFalsy()
|
||||
expect(lockfile.packages).not.toHaveProperty(['/@types/semver@5.3.31'])
|
||||
})
|
||||
|
||||
@@ -388,8 +388,8 @@ test("recreates lockfile if it doesn't match the dependencies in package.json",
|
||||
manifest = await addDependenciesToPackage(manifest, ['map-obj@1.0.0'], testDefaults({ pinnedVersion: 'patch', targetDependenciesField: 'optionalDependencies' }))
|
||||
|
||||
const lockfile1 = project.readLockfile()
|
||||
expect(lockfile1.dependencies['is-negative'].version).toBe('1.0.0')
|
||||
expect(lockfile1.dependencies['is-negative'].specifier).toBe('1.0.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['is-negative'].version).toBe('1.0.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['is-negative'].specifier).toBe('1.0.0')
|
||||
|
||||
manifest.dependencies!['is-negative'] = '^2.1.0'
|
||||
manifest.devDependencies!['is-positive'] = '^2.0.0'
|
||||
@@ -398,15 +398,16 @@ test("recreates lockfile if it doesn't match the dependencies in package.json",
|
||||
await install(manifest, testDefaults())
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
const importer = lockfile.importers!['.']!
|
||||
|
||||
expect(lockfile.dependencies['is-negative'].version).toBe('2.1.0')
|
||||
expect(lockfile.dependencies['is-negative'].specifier).toBe('^2.1.0')
|
||||
expect(importer.dependencies!['is-negative'].version).toBe('2.1.0')
|
||||
expect(importer.dependencies!['is-negative'].specifier).toBe('^2.1.0')
|
||||
|
||||
expect(lockfile.devDependencies['is-positive'].version).toBe('2.0.0')
|
||||
expect(lockfile.devDependencies['is-positive'].specifier).toBe('^2.0.0')
|
||||
expect(importer.devDependencies!['is-positive'].version).toBe('2.0.0')
|
||||
expect(importer.devDependencies!['is-positive'].specifier).toBe('^2.0.0')
|
||||
|
||||
expect(lockfile.optionalDependencies['map-obj'].version).toBe('1.0.1')
|
||||
expect(lockfile.optionalDependencies['map-obj'].specifier).toBe('1.0.1')
|
||||
expect(importer.optionalDependencies!['map-obj'].version).toBe('1.0.1')
|
||||
expect(importer.optionalDependencies!['map-obj'].specifier).toBe('1.0.1')
|
||||
})
|
||||
|
||||
test('repeat install with lockfile should not mutate lockfile when dependency has version specified with v prefix', async () => {
|
||||
@@ -416,7 +417,7 @@ test('repeat install with lockfile should not mutate lockfile when dependency ha
|
||||
|
||||
const lockfile1 = project.readLockfile()
|
||||
|
||||
expect(lockfile1.dependencies['highmaps-release'].version).toBe('5.0.11')
|
||||
expect(lockfile1.importers['.'].dependencies?.['highmaps-release'].version).toBe('5.0.11')
|
||||
|
||||
rimraf('node_modules')
|
||||
|
||||
@@ -478,18 +479,22 @@ test('scoped module from different registry', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'@foo/has-dep-from-same-scope': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
},
|
||||
'@zkochan/foo': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
},
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'@foo/has-dep-from-same-scope': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
},
|
||||
'@zkochan/foo': {
|
||||
specifier: '^1.0.0',
|
||||
version: '1.0.0',
|
||||
},
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -564,10 +569,10 @@ test('packages are placed in devDependencies even if they are present as non-dev
|
||||
},
|
||||
}, testDefaults({ reporter }))
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
const importer = project.readLockfile().importers!['.']!
|
||||
|
||||
expect(lockfile.devDependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep'])
|
||||
expect(lockfile.devDependencies).toHaveProperty(['@pnpm.e2e/pkg-with-1-dep'])
|
||||
expect(importer.devDependencies).toHaveProperty(['@pnpm.e2e/dep-of-pkg-with-1-dep'])
|
||||
expect(importer.devDependencies).toHaveProperty(['@pnpm.e2e/pkg-with-1-dep'])
|
||||
|
||||
expect(reporter.calledWithMatch({
|
||||
added: {
|
||||
@@ -789,14 +794,18 @@ test('packages installed via tarball URL from the default registry are normalize
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
|
||||
version: '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
|
||||
},
|
||||
'@pnpm.e2e/pkg-with-tarball-dep-from-registry': {
|
||||
specifier: `http://localhost:${REGISTRY_MOCK_PORT}/@pnpm.e2e/pkg-with-tarball-dep-from-registry/-/pkg-with-tarball-dep-from-registry-1.0.0.tgz`,
|
||||
version: '1.0.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
|
||||
version: '@registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz',
|
||||
},
|
||||
'@pnpm.e2e/pkg-with-tarball-dep-from-registry': {
|
||||
specifier: `http://localhost:${REGISTRY_MOCK_PORT}/@pnpm.e2e/pkg-with-tarball-dep-from-registry/-/pkg-with-tarball-dep-from-registry-1.0.0.tgz`,
|
||||
version: '1.0.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -1124,10 +1133,14 @@ test('tarball domain differs from registry domain', async () => {
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: '^3.1.0',
|
||||
version: '3.1.0',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -1171,10 +1184,14 @@ test('tarball installed through non-standard URL endpoint from the registry doma
|
||||
autoInstallPeers: true,
|
||||
excludeLinksFromLockfile: false,
|
||||
},
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: 'https://registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz',
|
||||
version: '@registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz',
|
||||
importers: {
|
||||
'.': {
|
||||
dependencies: {
|
||||
'is-positive': {
|
||||
specifier: 'https://registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz',
|
||||
version: '@registry.npmjs.org/is-positive/download/is-positive-3.1.0.tgz',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
lockfileVersion: LOCKFILE_VERSION,
|
||||
@@ -1228,7 +1245,7 @@ packages:
|
||||
}, testDefaults())
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.1.0')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.1.0')
|
||||
})
|
||||
|
||||
test('a lockfile v6 with merge conflicts is autofixed', async () => {
|
||||
@@ -1266,7 +1283,7 @@ packages:
|
||||
}, testDefaults())
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep']).toHaveProperty('version', '100.1.0')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toHaveProperty('version', '100.1.0')
|
||||
})
|
||||
|
||||
test('a lockfile with duplicate keys is fixed', async () => {
|
||||
@@ -1295,7 +1312,7 @@ packages:
|
||||
}, testDefaults({ reporter }))
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers?.['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
|
||||
expect(reporter).toBeCalledWith(expect.objectContaining({
|
||||
level: 'warn',
|
||||
|
||||
@@ -160,7 +160,7 @@ test('uninstall package with dependencies and do not touch other deps', async ()
|
||||
expect(manifest.dependencies).toStrictEqual({ 'is-negative': '2.1.0' })
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies).toStrictEqual({
|
||||
expect(lockfile.importers['.'].dependencies).toStrictEqual({
|
||||
'is-negative': {
|
||||
specifier: '2.1.0',
|
||||
version: '2.1.0',
|
||||
|
||||
@@ -78,7 +78,6 @@ export interface GetContextOptions {
|
||||
confirmModulesPurge?: boolean
|
||||
force: boolean
|
||||
forceNewModules?: boolean
|
||||
forceSharedLockfile: boolean
|
||||
frozenLockfile?: boolean
|
||||
extraBinPaths: string[]
|
||||
extendNodePath?: boolean
|
||||
@@ -185,7 +184,6 @@ export async function getContext (
|
||||
autoInstallPeers: opts.autoInstallPeers,
|
||||
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
||||
force: opts.force,
|
||||
forceSharedLockfile: opts.forceSharedLockfile,
|
||||
frozenLockfile: opts.frozenLockfile === true,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
projects: importersContext.projects,
|
||||
@@ -409,7 +407,6 @@ export async function getContextForSingleImporter (
|
||||
excludeLinksFromLockfile: boolean
|
||||
force: boolean
|
||||
forceNewModules?: boolean
|
||||
forceSharedLockfile: boolean
|
||||
confirmModulesPurge?: boolean
|
||||
extraBinPaths: string[]
|
||||
extendNodePath?: boolean
|
||||
@@ -524,7 +521,6 @@ export async function getContextForSingleImporter (
|
||||
autoInstallPeers: opts.autoInstallPeers,
|
||||
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
||||
force: opts.force,
|
||||
forceSharedLockfile: opts.forceSharedLockfile,
|
||||
frozenLockfile: false,
|
||||
lockfileDir: opts.lockfileDir,
|
||||
projects: [{ id: importerId, rootDir: opts.dir }],
|
||||
|
||||
@@ -30,7 +30,6 @@ export async function readLockfiles (
|
||||
autoInstallPeers: boolean
|
||||
excludeLinksFromLockfile: boolean
|
||||
force: boolean
|
||||
forceSharedLockfile: boolean
|
||||
frozenLockfile: boolean
|
||||
projects: Array<{
|
||||
id: string
|
||||
|
||||
@@ -9,7 +9,6 @@ const DEFAULT_OPTIONS: GetContextOptions = {
|
||||
excludeLinksFromLockfile: false,
|
||||
extraBinPaths: [],
|
||||
force: false,
|
||||
forceSharedLockfile: false,
|
||||
lockfileDir: path.join(__dirname, 'lockfile'),
|
||||
nodeLinker: 'isolated',
|
||||
hoistPattern: ['*'],
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/deps-have-lifecycle-scripts/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example':
|
||||
specifier: '*'
|
||||
version: 2.0.0
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example':
|
||||
specifier: '*'
|
||||
version: 2.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
17
pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml
generated
vendored
17
pkg-manager/headless/test/fixtures/has-glob-and-rimraf/pnpm-lock.yaml
generated
vendored
@@ -4,13 +4,16 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
glob:
|
||||
specifier: ^7.0.5
|
||||
version: 7.2.3
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
glob:
|
||||
specifier: ^7.0.5
|
||||
version: 7.2.3
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/has-glob/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
glob:
|
||||
specifier: ^7.0.5
|
||||
version: 7.2.3
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
glob:
|
||||
specifier: ^7.0.5
|
||||
version: 7.2.3
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/has-incompatible-optional-subdep/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-optional':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-optional':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/has-local-dep/pkg/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
tar-pkg:
|
||||
specifier: file:../tar-pkg-1.0.0.tgz
|
||||
version: file:../tar-pkg-1.0.0.tgz
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
tar-pkg:
|
||||
specifier: file:../tar-pkg-1.0.0.tgz
|
||||
version: file:../tar-pkg-1.0.0.tgz
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
4
pkg-manager/headless/test/fixtures/has-local-dir-dep/example/pnpm-lock.yaml
generated
vendored
4
pkg-manager/headless/test/fixtures/has-local-dir-dep/example/pnpm-lock.yaml
generated
vendored
@@ -3,3 +3,7 @@ lockfileVersion: '7.0'
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
|
||||
.: {}
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/has-local-dir-dep/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/has-local-dir-dep/pnpm-lock.yaml
generated
vendored
@@ -4,7 +4,10 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
example:
|
||||
specifier: link:example
|
||||
version: link:example
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
example:
|
||||
specifier: link:example
|
||||
version: link:example
|
||||
|
||||
24
pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml
generated
vendored
24
pkg-manager/headless/test/fixtures/has-nonexistent-optional-dep/pnpm-lock.yaml
generated
vendored
@@ -4,18 +4,20 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
importers:
|
||||
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
.:
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
23
pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml
generated
vendored
23
pkg-manager/headless/test/fixtures/has-several-versions-of-same-pkg/pnpm-lock.yaml
generated
vendored
@@ -4,16 +4,19 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
has-flag:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
ms:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
send:
|
||||
specifier: 0.17.2
|
||||
version: 0.17.2
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
has-flag:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
ms:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
send:
|
||||
specifier: 0.17.2
|
||||
version: 0.17.2
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
24
pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml
generated
vendored
24
pkg-manager/headless/test/fixtures/prod-dep-is-dev-subdep/pnpm-lock.yaml
generated
vendored
@@ -4,18 +4,20 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
once:
|
||||
specifier: ^1.4.0
|
||||
version: 1.4.0
|
||||
importers:
|
||||
|
||||
devDependencies:
|
||||
inflight:
|
||||
specifier: 1.0.6
|
||||
version: 1.0.6
|
||||
.:
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
once:
|
||||
specifier: ^1.4.0
|
||||
version: 1.4.0
|
||||
devDependencies:
|
||||
inflight:
|
||||
specifier: 1.0.6
|
||||
version: 1.0.6
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/reinstall-peer-deps/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
devDependencies:
|
||||
'@pnpm.e2e/abc':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0(@pnpm.e2e/peer-a@1.0.1)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0)
|
||||
importers:
|
||||
|
||||
.:
|
||||
devDependencies:
|
||||
'@pnpm.e2e/abc':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0(@pnpm.e2e/peer-a@1.0.1)(@pnpm.e2e/peer-b@1.0.0)(@pnpm.e2e/peer-c@1.0.0)
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/resolved-peer-deps-in-subdeps/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: false
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
pnpm-default-reporter:
|
||||
specifier: 0.14.7
|
||||
version: 0.14.7
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
pnpm-default-reporter:
|
||||
specifier: 0.14.7
|
||||
version: 0.14.7
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/side-effects-of-subdep/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
expire-fs:
|
||||
specifier: 2.2.3
|
||||
version: 2.2.3
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
expire-fs:
|
||||
specifier: 2.2.3
|
||||
version: 2.2.3
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/side-effects/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@pnpm.e2e/pre-and-postinstall-scripts-example':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
39
pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml
generated
vendored
39
pkg-manager/headless/test/fixtures/simple-shamefully-flatten/pnpm-lock.yaml
generated
vendored
@@ -4,26 +4,27 @@ settings:
|
||||
autoInstallPeers: false
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-peer-having-bin':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
importers:
|
||||
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
.:
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-peer-having-bin':
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
39
pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml
generated
vendored
39
pkg-manager/headless/test/fixtures/simple-with-more-deps/pnpm-lock.yaml
generated
vendored
@@ -4,26 +4,27 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
resolve-from:
|
||||
specifier: 4.0.0
|
||||
version: 4.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
importers:
|
||||
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
.:
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
resolve-from:
|
||||
specifier: 4.0.0
|
||||
version: 4.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
18
pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml
generated
vendored
18
pkg-manager/headless/test/fixtures/simple-with-optional-dep/pnpm-lock.yaml
generated
vendored
@@ -4,15 +4,17 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-good-optional':
|
||||
specifier: '*'
|
||||
version: 1.0.0
|
||||
importers:
|
||||
|
||||
optionalDependencies:
|
||||
is-positive:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
.:
|
||||
dependencies:
|
||||
'@pnpm.e2e/pkg-with-good-optional':
|
||||
specifier: '*'
|
||||
version: 1.0.0
|
||||
optionalDependencies:
|
||||
is-positive:
|
||||
specifier: 1.0.0
|
||||
version: 1.0.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
33
pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml
generated
vendored
33
pkg-manager/headless/test/fixtures/simple/pnpm-lock.yaml
generated
vendored
@@ -4,23 +4,24 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
importers:
|
||||
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
.:
|
||||
dependencies:
|
||||
is-positive:
|
||||
specifier: ^1.0.0
|
||||
version: 1.0.0
|
||||
rimraf:
|
||||
specifier: ^2.6.2
|
||||
version: 2.7.1
|
||||
optionalDependencies:
|
||||
colors:
|
||||
specifier: 1.2.0
|
||||
version: 1.2.0
|
||||
devDependencies:
|
||||
is-negative:
|
||||
specifier: ^2.1.0
|
||||
version: 2.1.0
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
11
pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml
generated
vendored
11
pkg-manager/headless/test/fixtures/with-1-dep/pnpm-lock.yaml
generated
vendored
@@ -4,10 +4,13 @@ settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
dependencies:
|
||||
rimraf:
|
||||
specifier: 2.5.1
|
||||
version: 2.5.1
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
rimraf:
|
||||
specifier: 2.5.1
|
||||
version: 2.5.1
|
||||
|
||||
packages:
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ test('recursive add --save-dev, --save-peer on workspace with multiple lockfiles
|
||||
{ 'is-negative': '1.0.0' }
|
||||
)
|
||||
expect(
|
||||
(projects['project-1'].readLockfile()).devDependencies
|
||||
projects['project-1'].readLockfile().importers['.'].devDependencies
|
||||
).toStrictEqual(
|
||||
{
|
||||
'is-positive': {
|
||||
@@ -80,7 +80,7 @@ test('recursive add --save-dev, --save-peer on workspace with multiple lockfiles
|
||||
{ 'is-negative': '1.0.0' }
|
||||
)
|
||||
expect(
|
||||
(projects['project-2'].readLockfile()).devDependencies
|
||||
projects['project-2'].readLockfile().importers['.'].devDependencies
|
||||
).toStrictEqual(
|
||||
{
|
||||
'is-positive': {
|
||||
|
||||
@@ -179,13 +179,13 @@ test('relative link', async () => {
|
||||
linkedProject.isExecutable('.bin/cowsay')
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.dependencies['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
expect(wantedLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
specifier: '*', // specifier of linked dependency added to ${WANTED_LOCKFILE}
|
||||
version: 'link:../hello-world-js-bin', // link added to wanted lockfile
|
||||
})
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
expect(currentLockfile.dependencies['@pnpm.e2e/hello-world-js-bin'].version).toBe('link:../hello-world-js-bin') // link added to wanted lockfile
|
||||
expect(currentLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin'].version).toBe('link:../hello-world-js-bin') // link added to wanted lockfile
|
||||
})
|
||||
|
||||
test('absolute link', async () => {
|
||||
@@ -212,13 +212,13 @@ test('absolute link', async () => {
|
||||
linkedProject.isExecutable('.bin/cowsay')
|
||||
|
||||
const wantedLockfile = project.readLockfile()
|
||||
expect(wantedLockfile.dependencies['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
expect(wantedLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin']).toStrictEqual({
|
||||
specifier: '*', // specifier of linked dependency added to ${WANTED_LOCKFILE}
|
||||
version: 'link:../hello-world-js-bin', // link added to wanted lockfile
|
||||
})
|
||||
|
||||
const currentLockfile = project.readCurrentLockfile()
|
||||
expect(currentLockfile.dependencies['@pnpm.e2e/hello-world-js-bin'].version).toBe('link:../hello-world-js-bin') // link added to wanted lockfile
|
||||
expect(currentLockfile.importers['.'].dependencies?.['@pnpm.e2e/hello-world-js-bin'].version).toBe('link:../hello-world-js-bin') // link added to wanted lockfile
|
||||
})
|
||||
|
||||
test('link --production', async () => {
|
||||
|
||||
@@ -43,7 +43,7 @@ test('recursive linking/unlinking', async () => {
|
||||
|
||||
{
|
||||
const project1Lockfile = projects['project-1'].readLockfile()
|
||||
expect(project1Lockfile.devDependencies['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(project1Lockfile.importers['.'].devDependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
}
|
||||
|
||||
await unlink.handler({
|
||||
@@ -63,7 +63,7 @@ test('recursive linking/unlinking', async () => {
|
||||
{
|
||||
const project1Lockfile = projects['project-1'].readLockfile()
|
||||
expect(project1Lockfile.lockfileVersion).toBe(LOCKFILE_VERSION)
|
||||
expect(project1Lockfile.devDependencies['is-positive'].version).toBe('1.0.0')
|
||||
expect(project1Lockfile.importers['.'].devDependencies?.['is-positive'].version).toBe('1.0.0')
|
||||
expect(project1Lockfile.packages['/is-positive@1.0.0']).toBeTruthy()
|
||||
}
|
||||
|
||||
@@ -108,7 +108,7 @@ test('recursive unlink specific package', async () => {
|
||||
|
||||
{
|
||||
const project1Lockfile = projects['project-1'].readLockfile()
|
||||
expect(project1Lockfile.devDependencies['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(project1Lockfile.importers['.'].devDependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
}
|
||||
|
||||
await unlink.handler({
|
||||
@@ -128,7 +128,7 @@ test('recursive unlink specific package', async () => {
|
||||
{
|
||||
const project1Lockfile = projects['project-1'].readLockfile()
|
||||
expect(project1Lockfile.lockfileVersion).toBe(LOCKFILE_VERSION)
|
||||
expect(project1Lockfile.devDependencies['is-positive'].version).toBe('1.0.0')
|
||||
expect(project1Lockfile.importers['.'].devDependencies?.['is-positive'].version).toBe('1.0.0')
|
||||
expect(project1Lockfile.packages['/is-positive@1.0.0']).toBeTruthy()
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ test('root dependency that has a peer is correctly updated after its version cha
|
||||
|
||||
{
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['ajv-keywords'].version).toBe('1.5.0(ajv@4.10.4)')
|
||||
expect(lockfile.importers['.'].dependencies?.['ajv-keywords'].version).toBe('1.5.0(ajv@4.10.4)')
|
||||
}
|
||||
|
||||
project.writePackageJson({
|
||||
@@ -69,6 +69,6 @@ test('root dependency that has a peer is correctly updated after its version cha
|
||||
|
||||
{
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['ajv-keywords'].version).toBe('1.5.1(ajv@4.10.4)')
|
||||
expect(lockfile.importers['.'].dependencies?.['ajv-keywords'].version).toBe('1.5.1(ajv@4.10.4)')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -173,7 +173,7 @@ test('update --no-save should not update package.json and pnpm-lock.yaml', async
|
||||
expect(manifest.dependencies?.['@pnpm.e2e/peer-a']).toBe('^1.0.0')
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/peer-a'].specifier).toBe('^1.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/peer-a'].specifier).toBe('^1.0.0')
|
||||
expect(lockfile.packages['/@pnpm.e2e/peer-a@1.0.0']).toBeTruthy()
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ test('update --no-save should not update package.json and pnpm-lock.yaml', async
|
||||
expect(manifest.dependencies?.['@pnpm.e2e/peer-a']).toBe('^1.0.0')
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/peer-a'].specifier).toBe('^1.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/peer-a'].specifier).toBe('^1.0.0')
|
||||
expect(lockfile.packages['/@pnpm.e2e/peer-a@1.0.1']).toBeTruthy()
|
||||
}
|
||||
})
|
||||
@@ -227,9 +227,9 @@ test('update should work normal when set empty string version', async () => {
|
||||
expect(lockfile.packages['/@pnpm.e2e/peer-a@1.0.1']).toBeTruthy()
|
||||
expect(lockfile.packages['/@pnpm.e2e/peer-c@2.0.0']).toBeTruthy()
|
||||
expect(lockfile.packages['/@pnpm.e2e/foo@2.0.0']).toBeTruthy()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/peer-a'].version).toEqual('1.0.1')
|
||||
expect(lockfile.devDependencies['@pnpm.e2e/foo'].version).toEqual('2.0.0')
|
||||
expect(lockfile.devDependencies['@pnpm.e2e/peer-c'].version).toEqual('2.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/peer-a'].version).toEqual('1.0.1')
|
||||
expect(lockfile.importers['.'].devDependencies?.['@pnpm.e2e/foo'].version).toEqual('2.0.0')
|
||||
expect(lockfile.importers['.'].devDependencies?.['@pnpm.e2e/peer-c'].version).toEqual('2.0.0')
|
||||
})
|
||||
|
||||
test('ignore packages in package.json > updateConfig.ignoreDependencies fields in update command', async () => {
|
||||
|
||||
@@ -82,7 +82,6 @@ export async function main (inputArgv: string[]) {
|
||||
}
|
||||
|
||||
let config: Config & {
|
||||
forceSharedLockfile: boolean
|
||||
argv: { remain: string[], cooked: string[], original: string[] }
|
||||
fallbackCommandUsed: boolean
|
||||
}
|
||||
@@ -100,7 +99,6 @@ export async function main (inputArgv: string[]) {
|
||||
if (cmd === 'dlx') {
|
||||
config.useStderr = true
|
||||
}
|
||||
config.forceSharedLockfile = typeof config.workspaceDir === 'string' && config.sharedWorkspaceLockfile === true
|
||||
config.argv = argv
|
||||
config.fallbackCommandUsed = fallbackCommandUsed
|
||||
// Set 'npm_command' env variable to current command name
|
||||
|
||||
@@ -265,9 +265,9 @@ save-workspace-protocol=false
|
||||
|
||||
{
|
||||
const lockfile = projects['project-1'].readLockfile()
|
||||
expect(lockfile.dependencies['project-2'].version).toBe('link:../project-2')
|
||||
expect(lockfile.devDependencies['is-negative'].version).toBe('link:../is-negative')
|
||||
expect(lockfile.optionalDependencies['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(lockfile.importers['.'].dependencies?.['project-2'].version).toBe('link:../project-2')
|
||||
expect(lockfile.importers['.'].devDependencies?.['is-negative'].version).toBe('link:../is-negative')
|
||||
expect(lockfile.importers['.'].optionalDependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
}
|
||||
|
||||
projects['is-positive'].writePackageJson({
|
||||
@@ -279,14 +279,14 @@ save-workspace-protocol=false
|
||||
|
||||
{
|
||||
const lockfile = projects['project-1'].readLockfile()
|
||||
expect(lockfile.optionalDependencies['is-positive'].version).toBe('1.0.0') // is-positive is unlinked and installed from registry
|
||||
expect(lockfile.importers['.'].optionalDependencies?.['is-positive'].version).toBe('1.0.0') // is-positive is unlinked and installed from registry
|
||||
}
|
||||
|
||||
await execPnpm(['update', 'is-negative@2.0.0'])
|
||||
|
||||
{
|
||||
const lockfile = projects['project-1'].readLockfile()
|
||||
expect(lockfile.devDependencies['is-negative'].version).toBe('2.0.0')
|
||||
expect(lockfile.importers['.'].devDependencies?.['is-negative'].version).toBe('2.0.0')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -594,16 +594,16 @@ test('installation with --link-workspace-packages links packages even if they we
|
||||
|
||||
{
|
||||
const lockfile = projects.project.readLockfile()
|
||||
expect(lockfile.dependencies['is-positive'].version).toBe('2.0.0')
|
||||
expect(lockfile.dependencies.negative.version).toBe('/is-negative@1.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['is-positive'].version).toBe('2.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.negative.version).toBe('/is-negative@1.0.0')
|
||||
}
|
||||
|
||||
await execPnpm(['recursive', 'install', '--link-workspace-packages'])
|
||||
|
||||
{
|
||||
const lockfile = projects.project.readLockfile()
|
||||
expect(lockfile.dependencies['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(lockfile.dependencies.negative.version).toBe('link:../is-negative')
|
||||
expect(lockfile.importers['.'].dependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(lockfile.importers['.'].dependencies?.negative.version).toBe('link:../is-negative')
|
||||
}
|
||||
})
|
||||
|
||||
@@ -892,7 +892,7 @@ test('local packages should be preferred when running "pnpm install" inside a wo
|
||||
|
||||
const lockfile = projects['project-1'].readLockfile()
|
||||
|
||||
expect(lockfile?.dependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
expect(lockfile?.importers['.'].dependencies?.['is-positive'].version).toBe('link:../is-positive')
|
||||
})
|
||||
|
||||
// covers https://github.com/pnpm/pnpm/issues/1437
|
||||
|
||||
@@ -22,7 +22,7 @@ test('update <dep>', async () => {
|
||||
project.storeHas('@pnpm.e2e/dep-of-pkg-with-1-dep', '101.0.0')
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
|
||||
const pkg = await readPackageJsonFromDir(process.cwd())
|
||||
expect(pkg.dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('^101.0.0')
|
||||
@@ -153,9 +153,9 @@ test('update --latest', async function () {
|
||||
project.storeHas('@pnpm.e2e/dep-of-pkg-with-1-dep', '101.0.0')
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.dependencies['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
|
||||
const pkg = await readPackageJsonFromDir(process.cwd())
|
||||
expect(pkg.dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('^101.0.0')
|
||||
@@ -180,9 +180,9 @@ test('update --latest --save-exact', async function () {
|
||||
project.storeHas('@pnpm.e2e/dep-of-pkg-with-1-dep', '101.0.0')
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.dependencies['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
|
||||
const pkg = await readPackageJsonFromDir(process.cwd())
|
||||
expect(pkg.dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('101.0.0')
|
||||
@@ -206,10 +206,10 @@ test('update --latest specific dependency', async function () {
|
||||
await execPnpm(['update', '-L', '@pnpm.e2e/bar', 'alias', 'is-negative'])
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
expect(lockfile.dependencies['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
|
||||
const pkg = await readPackageJsonFromDir(process.cwd())
|
||||
expect(pkg.dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('100.0.0')
|
||||
@@ -233,8 +233,8 @@ test('update --latest --prod', async function () {
|
||||
await execPnpm(['update', '--latest', '--prod'])
|
||||
|
||||
const lockfile = project.readLockfile()
|
||||
expect(lockfile.devDependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.dependencies['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile.importers['.'].devDependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
|
||||
const pkg = await readPackageJsonFromDir(process.cwd())
|
||||
expect(pkg.devDependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep']).toBe('100.0.0')
|
||||
@@ -282,8 +282,8 @@ test('recursive update --latest on projects that do not share a lockfile', async
|
||||
})
|
||||
|
||||
const lockfile1 = projects['project-1'].readLockfile()
|
||||
expect(lockfile1.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile1.dependencies['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
|
||||
const manifest2 = await readPackageJsonFromDir(path.resolve('project-2'))
|
||||
expect(manifest2.dependencies).toStrictEqual({
|
||||
@@ -292,8 +292,8 @@ test('recursive update --latest on projects that do not share a lockfile', async
|
||||
})
|
||||
|
||||
const lockfile2 = projects['project-2'].readLockfile()
|
||||
expect(lockfile2.dependencies['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile2.dependencies['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile2.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.1.0')
|
||||
expect(lockfile2.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
})
|
||||
|
||||
test('recursive update --latest --prod on projects that do not share a lockfile', async () => {
|
||||
@@ -341,8 +341,8 @@ test('recursive update --latest --prod on projects that do not share a lockfile'
|
||||
})
|
||||
|
||||
const lockfile1 = projects['project-1'].readLockfile()
|
||||
expect(lockfile1.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile1.devDependencies['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('101.0.0')
|
||||
expect(lockfile1.importers['.'].devDependencies?.['@pnpm.e2e/foo'].version).toBe('100.0.0')
|
||||
|
||||
projects['project-1'].has('@pnpm.e2e/dep-of-pkg-with-1-dep')
|
||||
projects['project-1'].has('@pnpm.e2e/foo')
|
||||
@@ -356,8 +356,8 @@ test('recursive update --latest --prod on projects that do not share a lockfile'
|
||||
})
|
||||
|
||||
const lockfile2 = projects['project-2'].readLockfile()
|
||||
expect(lockfile2.devDependencies['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile2.dependencies['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile2.importers['.'].devDependencies?.['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile2.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
|
||||
projects['project-2'].has('@pnpm.e2e/bar')
|
||||
projects['project-2'].has('@pnpm.e2e/foo')
|
||||
@@ -405,9 +405,9 @@ test('recursive update --latest specific dependency on projects that do not shar
|
||||
})
|
||||
|
||||
const lockfile1 = projects['project-1'].readLockfile()
|
||||
expect(lockfile1.dependencies['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile1.dependencies['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile1.dependencies['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['@pnpm.e2e/dep-of-pkg-with-1-dep'].version).toBe('100.0.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile1.importers['.'].dependencies?.['alias'].version).toBe('/@pnpm.e2e/qar@100.1.0')
|
||||
|
||||
const manifest2 = await readPackageJsonFromDir(path.resolve('project-2'))
|
||||
expect(manifest2.dependencies).toStrictEqual({
|
||||
@@ -416,8 +416,8 @@ test('recursive update --latest specific dependency on projects that do not shar
|
||||
})
|
||||
|
||||
const lockfile2 = projects['project-2'].readLockfile()
|
||||
expect(lockfile2.dependencies['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile2.dependencies['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
expect(lockfile2.importers['.'].dependencies?.['@pnpm.e2e/bar'].version).toBe('100.0.0')
|
||||
expect(lockfile2.importers['.'].dependencies?.['@pnpm.e2e/foo'].version).toBe('100.1.0')
|
||||
})
|
||||
|
||||
test('recursive update --latest on projects with a shared a lockfile', async () => {
|
||||
|
||||
@@ -10,7 +10,6 @@ export interface StrictStoreStatusOptions {
|
||||
dir: string
|
||||
storeDir: string
|
||||
force: boolean
|
||||
forceSharedLockfile: boolean
|
||||
nodeLinker: 'isolated' | 'hoisted' | 'pnp'
|
||||
useLockfile: boolean
|
||||
registries: Registries
|
||||
@@ -33,7 +32,6 @@ const defaults = async (opts: StoreStatusOptions) => {
|
||||
binsDir: path.join(dir, 'node_modules', '.bin'),
|
||||
dir,
|
||||
force: false,
|
||||
forceSharedLockfile: false,
|
||||
lockfileDir,
|
||||
nodeLinker: 'isolated',
|
||||
registries: DEFAULT_REGISTRIES,
|
||||
|
||||
Reference in New Issue
Block a user