diff --git a/packages/config/src/Config.ts b/packages/config/src/Config.ts index e588f29fd8..76aa130bd3 100644 --- a/packages/config/src/Config.ts +++ b/packages/config/src/Config.ts @@ -97,7 +97,7 @@ export interface Config { sort: boolean, strictPeerDependencies: boolean, pending: boolean, - lockfileDirectory?: string, + lockfileDir?: string, sharedWorkspaceLockfile?: boolean, useLockfile: boolean, resolutionStrategy: 'fast' | 'fewer-dependencies', @@ -111,6 +111,7 @@ export interface Config { export interface ConfigWithDeprecatedSettings extends Config { frozenShrinkwrap?: boolean, + lockfileDirectory?: string, shrinkwrapDirectory?: string, shrinkwrapOnly?: boolean, preferFrozenShrinkwrap?: boolean, diff --git a/packages/config/src/index.ts b/packages/config/src/index.ts index 95330ef66a..0fa9b67265 100644 --- a/packages/config/src/index.ts +++ b/packages/config/src/index.ts @@ -44,7 +44,8 @@ export const types = Object.assign({ 'lock': Boolean, 'lock-stale-duration': Number, 'lockfile': Boolean, - 'lockfile-directory': path, + 'lockfile-dir': String, + 'lockfile-directory': path, // TODO: deprecate 'lockfile-only': Boolean, 'network-concurrency': Number, 'offline': Boolean, @@ -217,9 +218,7 @@ export default async ( ? npmGlobalPrefix : path.resolve(npmGlobalPrefix, 'bin') pnpmConfig.globalPrefix = path.join(npmGlobalPrefix, 'pnpm-global') - pnpmConfig.lockfileDirectory = typeof pnpmConfig['lockfileDirectory'] === 'undefined' - ? pnpmConfig.shrinkwrapDirectory - : pnpmConfig['lockfileDirectory'] + pnpmConfig.lockfileDir = pnpmConfig.lockfileDir ?? pnpmConfig.lockfileDirectory ?? pnpmConfig.shrinkwrapDirectory pnpmConfig.useLockfile = (() => { if (typeof pnpmConfig['lockfile'] === 'boolean') return pnpmConfig['lockfile'] if (typeof pnpmConfig['packageLock'] === 'boolean') return pnpmConfig['packageLock'] @@ -275,12 +274,12 @@ export default async ( } pnpmConfig.sharedWorkspaceLockfile = false } - if (pnpmConfig.lockfileDirectory) { - if (opts.cliArgs['lockfile-directory']) { - throw new PnpmError('CONFIG_CONFLICT_LOCKFILE_DIRECTORY_WITH_GLOBAL', - 'Configuration conflict. "lockfile-directory" may not be used with "global"') + if (pnpmConfig.lockfileDir) { + if (opts.cliArgs['lockfile-dir']) { + throw new PnpmError('CONFIG_CONFLICT_LOCKFILE_DIR_WITH_GLOBAL', + 'Configuration conflict. "lockfile-dir" may not be used with "global"') } - delete pnpmConfig.lockfileDirectory + delete pnpmConfig.lockfileDir } if (opts.cliArgs['virtual-store-dir']) { throw new PnpmError('CONFIG_CONFLICT_VIRTUAL_STORE_DIR_WITH_GLOBAL', @@ -301,8 +300,8 @@ export default async ( } pnpmConfig.saveDev = true } - if (pnpmConfig.sharedWorkspaceLockfile && !pnpmConfig.lockfileDirectory) { - pnpmConfig.lockfileDirectory = pnpmConfig.workspacePrefix || undefined + if (pnpmConfig.sharedWorkspaceLockfile && !pnpmConfig.lockfileDir) { + pnpmConfig.lockfileDir = pnpmConfig.workspacePrefix || undefined } pnpmConfig.packageManager = packageManager diff --git a/packages/config/test/index.ts b/packages/config/test/index.ts index 4201a05efa..944858725b 100644 --- a/packages/config/test/index.ts +++ b/packages/config/test/index.ts @@ -71,12 +71,12 @@ test('throw error if --shared-workspace-lockfile is used with --global', async ( } }) -test('throw error if --lockfile-directory is used with --global', async (t) => { +test('throw error if --lockfile-dir is used with --global', async (t) => { try { await getConfig({ cliArgs: { 'global': true, - 'lockfile-directory': '/home/src', + 'lockfile-dir': '/home/src', }, packageManager: { name: 'pnpm', @@ -84,8 +84,8 @@ test('throw error if --lockfile-directory is used with --global', async (t) => { }, }) } catch (err) { - t.equal(err.message, 'Configuration conflict. "lockfile-directory" may not be used with "global"') - t.equal((err as PnpmError).code, 'ERR_PNPM_CONFIG_CONFLICT_LOCKFILE_DIRECTORY_WITH_GLOBAL') + t.equal(err.message, 'Configuration conflict. "lockfile-dir" may not be used with "global"') + t.equal((err as PnpmError).code, 'ERR_PNPM_CONFIG_CONFLICT_LOCKFILE_DIR_WITH_GLOBAL') t.end() } }) @@ -172,7 +172,7 @@ test('when using --global, link-workspace-packages, shared-workspace-shrinwrap a }) t.ok(config.linkWorkspacePackages) t.ok(config.sharedWorkspaceLockfile) - t.ok(config.lockfileDirectory) + t.ok(config.lockfileDir) } { @@ -187,7 +187,7 @@ test('when using --global, link-workspace-packages, shared-workspace-shrinwrap a }) t.notOk(config.linkWorkspacePackages, 'link-workspace-packages is false') t.notOk(config.sharedWorkspaceLockfile, 'shared-workspace-lockfile is false') - t.notOk(config.lockfileDirectory, 'lockfile-directory is null') + t.notOk(config.lockfileDir, 'lockfile-dir is null') } t.end() diff --git a/packages/dependencies-hierarchy/src/index.ts b/packages/dependencies-hierarchy/src/index.ts index 0c2806b4d0..49aa44e8e3 100644 --- a/packages/dependencies-hierarchy/src/index.ts +++ b/packages/dependencies-hierarchy/src/index.ts @@ -56,13 +56,13 @@ export default async function dependenciesHierarchy ( include?: { [dependenciesField in DependenciesField]: boolean }, registries?: Registries, search?: SearchFunction, - lockfileDirectory: string, + lockfileDir: string, }, ): Promise<{ [prefix: string]: DependenciesHierarchy }> { - if (!maybeOpts || !maybeOpts.lockfileDirectory) { - throw new TypeError('opts.lockfileDirectory is required') + if (!maybeOpts || !maybeOpts.lockfileDir) { + throw new TypeError('opts.lockfileDir is required') } - const modulesDir = await realNodeModulesDir(maybeOpts.lockfileDirectory) + const modulesDir = await realNodeModulesDir(maybeOpts.lockfileDir) const modules = await readModulesYaml(modulesDir) const registries = normalizeRegistries({ ...maybeOpts && maybeOpts.registries, @@ -86,7 +86,7 @@ export default async function dependenciesHierarchy ( devDependencies: true, optionalDependencies: true, }, - lockfileDirectory: maybeOpts.lockfileDirectory, + lockfileDir: maybeOpts.lockfileDir, registries, search: maybeOpts.search, skipped: new Set(modules && modules.skipped || []), @@ -113,10 +113,10 @@ async function dependenciesHierarchyForPackage ( registries: Registries, search?: SearchFunction, skipped: Set, - lockfileDirectory: string, + lockfileDir: string, }, ) { - const importerId = getLockfileImporterId(opts.lockfileDirectory, projectPath) + const importerId = getLockfileImporterId(opts.lockfileDir, projectPath) if (!currentLockfile.importers[importerId]) return {} @@ -125,7 +125,7 @@ async function dependenciesHierarchyForPackage ( const savedDeps = getAllDirectDependencies(currentLockfile.importers[importerId]) const allDirectDeps = await readModulesDir(modulesDir) || [] const unsavedDeps = allDirectDeps.filter((directDep) => !savedDeps[directDep]) - const wantedLockfile = await readWantedLockfile(opts.lockfileDirectory, { ignoreIncompatible: false }) || { packages: {} } + const wantedLockfile = await readWantedLockfile(opts.lockfileDir, { ignoreIncompatible: false }) || { packages: {} } const getChildrenTree = getTree.bind(null, { currentDepth: 1, diff --git a/packages/dependencies-hierarchy/test/index.ts b/packages/dependencies-hierarchy/test/index.ts index bd80670f1a..6ca53f19aa 100644 --- a/packages/dependencies-hierarchy/test/index.ts +++ b/packages/dependencies-hierarchy/test/index.ts @@ -15,7 +15,7 @@ const fixtureMonorepo = path.join(__dirname, '..', 'fixtureMonorepo') const withAliasedDepFixture = path.join(fixtures, 'with-aliased-dep') test('one package depth 0', async t => { - const tree = await dh([generalFixture], { depth: 0, lockfileDirectory: generalFixture }) + const tree = await dh([generalFixture], { depth: 0, lockfileDir: generalFixture }) const modulesDir = path.join(generalFixture, 'node_modules') t.deepEqual(tree, { @@ -78,7 +78,7 @@ test('one package depth 0', async t => { }) test('one package depth 1', async t => { - const tree = await dh([generalFixture], { depth: 1, lockfileDirectory: generalFixture }) + const tree = await dh([generalFixture], { depth: 1, lockfileDir: generalFixture }) const modulesDir = path.join(generalFixture, 'node_modules') t.deepEqual(tree, { @@ -178,7 +178,7 @@ test('only prod depth 0', async t => { devDependencies: false, optionalDependencies: false, }, - lockfileDirectory: generalFixture, + lockfileDir: generalFixture, }, ) const modulesDir = path.join(generalFixture, 'node_modules') @@ -225,7 +225,7 @@ test('only dev depth 0', async t => { devDependencies: true, optionalDependencies: false, }, - lockfileDirectory: generalFixture, + lockfileDir: generalFixture, }, ) const modulesDir = path.join(generalFixture, 'node_modules') @@ -254,7 +254,7 @@ test('only dev depth 0', async t => { test('hierarchy for no packages', async t => { const tree = await dh([generalFixture], { depth: 100, - lockfileDirectory: generalFixture, + lockfileDir: generalFixture, search: () => false, }) @@ -274,7 +274,7 @@ test('filter 1 package with depth 0', async t => { [generalFixture], { depth: 0, - lockfileDirectory: generalFixture, + lockfileDir: generalFixture, search: ({ name }) => name === 'rimraf', }, ) @@ -305,7 +305,7 @@ test('filter 1 package with depth 0', async t => { }) test('circular dependency', async t => { - const tree = await dh([circularFixture], { depth: 1000, lockfileDirectory: circularFixture }) + const tree = await dh([circularFixture], { depth: 1000, lockfileDir: circularFixture }) const modulesDir = path.join(circularFixture, 'node_modules') t.deepEqual(tree, { @@ -339,7 +339,7 @@ function resolvePaths (modulesDir: string, node: PackageNode): PackageNode { } test('local package depth 0', async t => { - const tree = await dh([withFileDepFixture], { depth: 1, lockfileDirectory: withFileDepFixture }) + const tree = await dh([withFileDepFixture], { depth: 1, lockfileDir: withFileDepFixture }) const modulesDir = path.join(withFileDepFixture, 'node_modules') t.deepEqual(tree, { @@ -375,7 +375,7 @@ test('local package depth 0', async t => { }) test('on a package that has only links', async t => { - const tree = await dh([withLinksOnlyFixture], { depth: 1000, lockfileDirectory: withLinksOnlyFixture }) + const tree = await dh([withLinksOnlyFixture], { depth: 1000, lockfileDir: withLinksOnlyFixture }) t.deepEqual(tree, { [withLinksOnlyFixture]: { @@ -401,7 +401,7 @@ test('on a package that has only links', async t => { test('unsaved dependencies are listed', async t => { const modulesDir = path.join(withUnsavedDepsFixture, 'node_modules') t.deepEqual( - await dh([withUnsavedDepsFixture], { depth: 0, lockfileDirectory: withUnsavedDepsFixture }), + await dh([withUnsavedDepsFixture], { depth: 0, lockfileDir: withUnsavedDepsFixture }), { [withUnsavedDepsFixture]: { dependencies: [ @@ -452,7 +452,7 @@ test('unsaved dependencies are listed and filtered', async t => { [withUnsavedDepsFixture], { depth: 0, - lockfileDirectory: withUnsavedDepsFixture, + lockfileDir: withUnsavedDepsFixture, search: ({ name }) => name === 'symlink-dir', }, ), @@ -482,14 +482,14 @@ test('unsaved dependencies are listed and filtered', async t => { // Covers https://github.com/pnpm/pnpm/issues/1549 test(`do not fail on importers that are not in current ${WANTED_LOCKFILE}`, async t => { - t.deepEqual(await dh([fixtureMonorepo], { depth: 0, lockfileDirectory: fixtureMonorepo }), { [fixtureMonorepo]: {} }) + t.deepEqual(await dh([fixtureMonorepo], { depth: 0, lockfileDir: fixtureMonorepo }), { [fixtureMonorepo]: {} }) t.end() }) test('dependency with an alias', async t => { const modulesDir = path.join(withAliasedDepFixture, 'node_modules') t.deepEqual( - await dh([withAliasedDepFixture], { depth: 0, lockfileDirectory: withAliasedDepFixture }), + await dh([withAliasedDepFixture], { depth: 0, lockfileDir: withAliasedDepFixture }), { [withAliasedDepFixture]: { dependencies: [ @@ -514,7 +514,7 @@ test('dependency with an alias', async t => { }) test('peer dependencies', async t => { - const hierarchy = await dh([withPeerFixture], { depth: 1, lockfileDirectory: withPeerFixture }) + const hierarchy = await dh([withPeerFixture], { depth: 1, lockfileDir: withPeerFixture }) t.equal(hierarchy[withPeerFixture].dependencies![1].dependencies![0].name, 'ajv') t.equal(hierarchy[withPeerFixture].dependencies![1].dependencies![0].isPeer, true) t.end() diff --git a/packages/headless/src/index.ts b/packages/headless/src/index.ts index 1015d061a8..01b5bba1cb 100644 --- a/packages/headless/src/index.ts +++ b/packages/headless/src/index.ts @@ -88,7 +88,7 @@ export interface HeadlessOptions { }>, hoistedAliases: {[depPath: string]: string[]} hoistPattern?: string[], - lockfileDirectory: string, + lockfileDir: string, virtualStoreDir?: string, shamefullyHoist: boolean, storeController: StoreController, @@ -118,7 +118,7 @@ export default async (opts: HeadlessOptions) => { streamParser.on('data', reporter) } - const lockfileDir = opts.lockfileDirectory + const lockfileDir = opts.lockfileDir const wantedLockfile = opts.wantedLockfile || await readWantedLockfile(lockfileDir, { ignoreIncompatible: false }) if (!wantedLockfile) { @@ -245,14 +245,14 @@ export default async (opts: HeadlessOptions) => { getIndependentPackageLocation: opts.independentLeaves ? async (packageId: string, packageName: string) => { const { directory } = await opts.storeController.getPackageLocation(packageId, packageName, { - lockfileDirectory: lockfileDir, + lockfileDir, targetEngine: opts.sideEffectsCacheRead && ENGINE_NAME || undefined, }) return directory } : undefined, lockfile: filteredLockfile, - lockfileDirectory: lockfileDir, + lockfileDir, modulesDir: hoistedModulesDir, registries: opts.registries, virtualStoreDir, @@ -496,7 +496,7 @@ async function lockfileToDepGraph ( const modules = path.join(opts.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDir), 'node_modules') const packageId = packageIdFromSnapshot(relDepPath, pkgSnapshot, opts.registries) const pkgLocation = await opts.storeController.getPackageLocation(packageId, pkgName, { - lockfileDirectory: opts.lockfileDir, + lockfileDir: opts.lockfileDir, targetEngine: opts.sideEffectsCacheRead && !opts.force && ENGINE_NAME || undefined, }) @@ -632,7 +632,7 @@ async function getChildrenPaths ( const pkgId = childPkgSnapshot.id || childDepPath const pkgName = nameVerFromPkgSnapshot(childRelDepPath, childPkgSnapshot).name const pkgLocation = await ctx.storeController.getPackageLocation(pkgId, pkgName, { - lockfileDirectory: ctx.lockfileDir, + lockfileDir: ctx.lockfileDir, targetEngine: ctx.sideEffectsCacheRead && !ctx.force && ENGINE_NAME || undefined, }) children[alias] = pkgLocation.directory diff --git a/packages/headless/test/index.ts b/packages/headless/test/index.ts index cb3d68ae46..0976eff4e2 100644 --- a/packages/headless/test/index.ts +++ b/packages/headless/test/index.ts @@ -29,7 +29,7 @@ test('installing a simple project', async (t) => { const reporter = sinon.spy() await headless(await testDefaults({ - lockfileDirectory: prefix, + lockfileDir: prefix, reporter, })) @@ -90,7 +90,7 @@ test('installing only prod deps', async (t) => { devDependencies: false, optionalDependencies: false, }, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const project = assertProject(t, prefix) @@ -114,7 +114,7 @@ test('installing only dev deps', async (t) => { devDependencies: true, optionalDependencies: false, }, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const project = assertProject(t, prefix) @@ -135,7 +135,7 @@ test('installing non-prod deps then all deps', async (t) => { devDependencies: true, optionalDependencies: true, }, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const project = assertProject(t, prefix) @@ -163,7 +163,7 @@ test('installing non-prod deps then all deps', async (t) => { devDependencies: true, optionalDependencies: true, }, - lockfileDirectory: prefix, + lockfileDir: prefix, reporter, })) @@ -207,7 +207,7 @@ test('installing only optional deps', async (t) => { devDependencies: false, optionalDependencies: true, }, - lockfileDirectory: prefix, + lockfileDir: prefix, optional: true, production: false, })) @@ -232,7 +232,7 @@ test('not installing optional deps', async (t) => { devDependencies: true, optionalDependencies: false, }, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const project = assertProject(t, prefix) @@ -262,7 +262,7 @@ test('installing with independent-leaves and hoistPattern=*', async (t) => { importers.map(async (importer) => ({ ...importer, manifest: await readPackageJsonFromDir(importer.prefix), })), ), independentLeaves: true, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const project = assertProject(t, prefix) @@ -287,7 +287,7 @@ test('installing with independent-leaves when an optional subdep is skipped', as await headless(await testDefaults({ independentLeaves: true, - lockfileDirectory: prefix, + lockfileDir: prefix, })) const modulesInfo = await readYamlFile<{ skipped: string[] }>(path.join(prefix, 'node_modules', '.modules.yaml')) @@ -311,7 +311,7 @@ test('run pre/postinstall scripts', async (t) => { const outputJsonPath = path.join(prefix, 'output.json') await rimraf(outputJsonPath) - await headless(await testDefaults({ lockfileDirectory: prefix })) + await headless(await testDefaults({ lockfileDir: prefix })) const project = assertProject(t, prefix) const generatedByPreinstall = project.requireModule('pre-and-postinstall-scripts-example/generated-by-preinstall') @@ -325,7 +325,7 @@ test('run pre/postinstall scripts', async (t) => { await rimraf(outputJsonPath) await rimraf(path.join(prefix, 'node_modules')) - await headless(await testDefaults({ lockfileDirectory: prefix, ignoreScripts: true })) + await headless(await testDefaults({ lockfileDir: prefix, ignoreScripts: true })) t.notOk(await exists(outputJsonPath)) @@ -353,7 +353,7 @@ test('orphan packages are removed', async (t) => { fse.copySync(path.join(simpleWithMoreDepsDir, WANTED_LOCKFILE), destLockfileYamlPath) await headless(await testDefaults({ - lockfileDirectory: projectDir, + lockfileDir: projectDir, })) fse.copySync(path.join(simpleDir, 'package.json'), destPackageJsonPath) @@ -361,7 +361,7 @@ test('orphan packages are removed', async (t) => { const reporter = sinon.spy() await headless(await testDefaults({ - lockfileDirectory: projectDir, + lockfileDir: projectDir, reporter, })) @@ -393,13 +393,13 @@ test('available packages are used when node_modules is not clean', async (t) => fse.copySync(path.join(hasGlobDir, 'package.json'), destPackageJsonPath) fse.copySync(path.join(hasGlobDir, WANTED_LOCKFILE), destLockfileYamlPath) - await headless(await testDefaults({ lockfileDirectory: projectDir })) + await headless(await testDefaults({ lockfileDir: projectDir })) fse.copySync(path.join(hasGlobAndRimrafDir, 'package.json'), destPackageJsonPath) fse.copySync(path.join(hasGlobAndRimrafDir, WANTED_LOCKFILE), destLockfileYamlPath) const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: projectDir, reporter })) + await headless(await testDefaults({ lockfileDir: projectDir, reporter })) const project = assertProject(t, projectDir) await project.has('rimraf') @@ -433,13 +433,13 @@ test('available packages are relinked during forced install', async (t) => { fse.copySync(path.join(hasGlobDir, 'package.json'), destPackageJsonPath) fse.copySync(path.join(hasGlobDir, WANTED_LOCKFILE), destLockfileYamlPath) - await headless(await testDefaults({ lockfileDirectory: projectDir })) + await headless(await testDefaults({ lockfileDir: projectDir })) fse.copySync(path.join(hasGlobAndRimrafDir, 'package.json'), destPackageJsonPath) fse.copySync(path.join(hasGlobAndRimrafDir, WANTED_LOCKFILE), destLockfileYamlPath) const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: projectDir, reporter, force: true })) + await headless(await testDefaults({ lockfileDir: projectDir, reporter, force: true })) const project = assertProject(t, projectDir) await project.has('rimraf') @@ -472,7 +472,7 @@ test(`fail when ${WANTED_LOCKFILE} is not up-to-date with package.json`, async ( fse.copySync(path.join(simpleWithMoreDepsDir, WANTED_LOCKFILE), path.join(projectDir, WANTED_LOCKFILE)) try { - await headless(await testDefaults({ lockfileDirectory: projectDir })) + await headless(await testDefaults({ lockfileDir: projectDir })) t.fail() } catch (err) { t.equal(err.message, `Cannot install with "frozen-lockfile" because ${WANTED_LOCKFILE} is not up-to-date with package.json`) @@ -485,7 +485,7 @@ test('installing local dependency', async (t) => { const prefix = path.join(fixtures, 'has-local-dep') const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: prefix, reporter })) + await headless(await testDefaults({ lockfileDir: prefix, reporter })) const project = assertProject(t, prefix) t.ok(project.requireModule('tar-pkg'), 'prod dep installed') @@ -497,7 +497,7 @@ test('installing local directory dependency', async (t) => { const prefix = path.join(fixtures, 'has-local-dir-dep') const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: prefix, reporter })) + await headless(await testDefaults({ lockfileDir: prefix, reporter })) const project = assertProject(t, prefix) t.ok(project.requireModule('example/package.json'), 'prod dep installed') @@ -516,7 +516,7 @@ test('installing using passed in lockfile files', async (t) => { const wantedLockfile = await readWantedLockfile(simplePkgPath, { ignoreIncompatible: false }) await headless(await testDefaults({ - lockfileDirectory: prefix, + lockfileDir: prefix, wantedLockfile, })) @@ -533,7 +533,7 @@ test('installing using passed in lockfile files', async (t) => { test('installation of a dependency that has a resolved peer in subdeps', async (t) => { const prefix = path.join(fixtures, 'resolved-peer-deps-in-subdeps') - await headless(await testDefaults({ lockfileDirectory: prefix })) + await headless(await testDefaults({ lockfileDir: prefix })) const project = assertProject(t, prefix) t.ok(project.requireModule('pnpm-default-reporter'), 'prod dep installed') @@ -546,7 +546,7 @@ test('independent-leaves: installing a simple project', async (t) => { await rimraf(path.join(prefix, 'node_modules')) const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: prefix, reporter, independentLeaves: true })) + await headless(await testDefaults({ lockfileDir: prefix, reporter, independentLeaves: true })) const project = assertProject(t, prefix) t.ok(project.requireModule('is-positive'), 'prod dep installed') @@ -592,7 +592,7 @@ test('installing with hoistPattern=*', async (t) => { const prefix = path.join(fixtures, 'simple-shamefully-flatten') const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: prefix, reporter, hoistPattern: '*' })) + await headless(await testDefaults({ lockfileDir: prefix, reporter, hoistPattern: '*' })) const project = assertProject(t, prefix) t.ok(project.requireModule('is-positive'), 'prod dep installed') @@ -652,7 +652,7 @@ test('installing with hoistPattern=* and shamefullyHoist=true', async (t) => { await rimraf(path.join(prefix, 'node_modules')) const reporter = sinon.spy() - await headless(await testDefaults({ lockfileDirectory: prefix, reporter, hoistPattern: '*', shamefullyHoist: true })) + await headless(await testDefaults({ lockfileDir: prefix, reporter, hoistPattern: '*', shamefullyHoist: true })) const project = assertProject(t, prefix) t.ok(project.requireModule('is-positive'), 'prod dep installed') @@ -715,7 +715,7 @@ test('using side effects cache', async (t) => { // Right now, hardlink does not work with side effects, so we specify copy as the packageImportMethod // We disable verifyStoreIntegrity because we are going to change the cache const opts = await testDefaults({ - lockfileDirectory: prefix, + lockfileDir: prefix, sideEffectsCacheRead: true, sideEffectsCacheWrite: true, verifyStoreIntegrity: false, @@ -752,7 +752,7 @@ test('using side effects cache and hoistPattern=*', async (t) => { importers: await Promise.all( importers.map(async (importer) => ({ ...importer, manifest: await readPackageJsonFromDir(importer.prefix), })), ), - lockfileDirectory: prefix, + lockfileDir: prefix, sideEffectsCacheRead: true, sideEffectsCacheWrite: true, verifyStoreIntegrity: false, @@ -796,7 +796,7 @@ test('installing in a workspace', async (t) => { await headless(await testDefaults({ importers, - lockfileDirectory: workspaceFixture, + lockfileDir: workspaceFixture, })) const projectBar = assertProject(t, path.join(workspaceFixture, 'bar')) @@ -805,7 +805,7 @@ test('installing in a workspace', async (t) => { await headless(await testDefaults({ importers: [importers[0]], - lockfileDirectory: workspaceFixture, + lockfileDir: workspaceFixture, })) const rootNodeModules = assertProject(t, workspaceFixture) @@ -838,7 +838,7 @@ test('independent-leaves: installing in a workspace', async (t) => { importers.map(async (importer) => ({ ...importer, manifest: await readPackageJsonFromDir(importer.prefix), })), ), independentLeaves: true, - lockfileDirectory: workspaceFixture, + lockfileDir: workspaceFixture, })) const projectBar = assertProject(t, path.join(workspaceFixture, 'bar')) diff --git a/packages/headless/test/utils/testDefaults.ts b/packages/headless/test/utils/testDefaults.ts index 4e9724990a..373852874d 100644 --- a/packages/headless/test/utils/testDefaults.ts +++ b/packages/headless/test/utils/testDefaults.ts @@ -24,16 +24,16 @@ export default async function testDefaults ( storeOpts?: any, // tslint:disable-line ): Promise { let storeDir = opts && opts.storeDir || tempy.directory() - const lockfileDirectory = opts && opts.lockfileDirectory || process.cwd() + const lockfileDir = opts && opts.lockfileDir || process.cwd() const { importers, include, pendingBuilds, registries } = await readImportersContext( [ { - prefix: lockfileDirectory, + prefix: lockfileDir, }, ], - lockfileDirectory, + lockfileDir, ) - storeDir = await storePath(lockfileDirectory, storeDir) + storeDir = await storePath(lockfileDir, storeDir) const rawConfig = { registry } const storeController = await createStore( createResolver({ @@ -69,7 +69,7 @@ export default async function testDefaults ( ), include, independentLeaves: false, - lockfileDirectory, + lockfileDir, packageManager: { name: 'pnpm', version: '1.0.0', diff --git a/packages/hoist/src/index.ts b/packages/hoist/src/index.ts index c8245e420b..584522acf3 100644 --- a/packages/hoist/src/index.ts +++ b/packages/hoist/src/index.ts @@ -19,7 +19,7 @@ export default async function hoistByLockfile ( opts: { getIndependentPackageLocation?: (packageId: string, packageName: string) => Promise, lockfile: Lockfile, - lockfileDirectory: string, + lockfileDir: string, modulesDir: string, registries: Registries, virtualStoreDir: string, @@ -43,7 +43,7 @@ export default async function hoistByLockfile ( const deps = await getDependencies(opts.lockfile.packages, Array.from(entryNodes.values()), new Set(), 0, { getIndependentPackageLocation: opts.getIndependentPackageLocation, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, registries: opts.registries, virtualStoreDir: opts.virtualStoreDir, }) @@ -76,7 +76,7 @@ async function getDependencies ( opts: { getIndependentPackageLocation?: (packageId: string, packageName: string) => Promise, registries: Registries, - lockfileDirectory: string, + lockfileDir: string, virtualStoreDir: string, }, ): Promise { @@ -100,7 +100,7 @@ async function getDependencies ( const absolutePath = dp.resolve(opts.registries, depRelPath) const pkgName = nameVerFromPkgSnapshot(depRelPath, pkgSnapshot).name - const modules = path.join(opts.virtualStoreDir, pkgIdToFilename(absolutePath, opts.lockfileDirectory), 'node_modules') + const modules = path.join(opts.virtualStoreDir, pkgIdToFilename(absolutePath, opts.lockfileDir), 'node_modules') const independent = opts.getIndependentPackageLocation && packageIsIndependent(pkgSnapshot) const allDeps = { ...pkgSnapshot.dependencies, diff --git a/packages/list/src/index.ts b/packages/list/src/index.ts index 49e75a41e7..444a11aa82 100644 --- a/packages/list/src/index.ts +++ b/packages/list/src/index.ts @@ -22,7 +22,7 @@ export async function forPackages ( maybeOpts: { alwaysPrintRootPackage?: boolean, depth?: number, - lockfileDirectory: string, + lockfileDir: string, long?: boolean, include?: { [dependenciesField in DependenciesField]: boolean }, reportAs?: 'parseable' | 'tree' | 'json', @@ -37,7 +37,7 @@ export async function forPackages ( R.toPairs(await dh(projectPaths, { depth: opts.depth, include: maybeOpts?.include, - lockfileDirectory: maybeOpts?.lockfileDirectory, + lockfileDir: maybeOpts?.lockfileDir, registries: opts.registries, search, })) @@ -67,7 +67,7 @@ export default async function ( maybeOpts: { alwaysPrintRootPackage?: boolean, depth?: number, - lockfileDirectory: string, + lockfileDir: string, long?: boolean, include?: { [dependenciesField in DependenciesField]: boolean }, reportAs?: 'parseable' | 'tree' | 'json', @@ -86,7 +86,7 @@ export default async function ( : await dh(projectPaths, { depth: opts.depth, include: maybeOpts && maybeOpts.include, - lockfileDirectory: maybeOpts && maybeOpts.lockfileDirectory, + lockfileDir: maybeOpts && maybeOpts.lockfileDir, registries: opts.registries, }) ) diff --git a/packages/list/test/index.ts b/packages/list/test/index.ts index 078b7667f6..35659faeae 100644 --- a/packages/list/test/index.ts +++ b/packages/list/test/index.ts @@ -31,7 +31,7 @@ const fixtureWithAliasedDep = path.join(__dirname, 'with-aliased-dep') test('list all deps of a package that has an external lockfile', async (t) => { t.equal(await list([fixtureWithExternalLockfile], { - lockfileDirectory: path.join(fixtureWithExternalLockfile, '..'), + lockfileDir: path.join(fixtureWithExternalLockfile, '..'), }), stripIndent` ${LEGEND} @@ -45,7 +45,7 @@ test('list all deps of a package that has an external lockfile', async (t) => { }) test('list with default parameters', async t => { - t.equal(await list([fixture], { lockfileDirectory: fixture }), stripIndent` + t.equal(await list([fixture], { lockfileDir: fixture }), stripIndent` ${LEGEND} fixture@1.0.0 ${fixture} @@ -64,7 +64,7 @@ test('list with default parameters', async t => { }) test('list with default parameters in pkg that has no name and version', async t => { - t.equal(await list([fixtureWithNoPkgNameAndNoVersion], { lockfileDirectory: fixtureWithNoPkgNameAndNoVersion }), stripIndent` + t.equal(await list([fixtureWithNoPkgNameAndNoVersion], { lockfileDir: fixtureWithNoPkgNameAndNoVersion }), stripIndent` ${LEGEND} ${fixtureWithNoPkgNameAndNoVersion} @@ -83,7 +83,7 @@ test('list with default parameters in pkg that has no name and version', async t }) test('list with default parameters in pkg that has no version', async t => { - t.equal(await list([fixtureWithNoPkgVersion], { lockfileDirectory: fixtureWithNoPkgVersion }), stripIndent` + t.equal(await list([fixtureWithNoPkgVersion], { lockfileDir: fixtureWithNoPkgVersion }), stripIndent` ${LEGEND} fixture ${fixtureWithNoPkgVersion} @@ -105,7 +105,7 @@ test('list dev only', async t => { t.equal( await list([fixture], { include: { dependencies: false, devDependencies: true, optionalDependencies: false }, - lockfileDirectory: fixture, + lockfileDir: fixture, }), stripIndent` ${LEGEND} @@ -124,7 +124,7 @@ test('list prod only', async t => { t.equal( await list([fixture], { include: { dependencies: true, devDependencies: false, optionalDependencies: false }, - lockfileDirectory: fixture, + lockfileDir: fixture, }), stripIndent` ${LEGEND} @@ -144,7 +144,7 @@ test('list prod only with depth 2', async t => { await list([fixture], { depth: 2, include: { dependencies: true, devDependencies: false, optionalDependencies: false }, - lockfileDirectory: fixture, + lockfileDir: fixture, }), stripIndent` ${LEGEND} @@ -171,7 +171,7 @@ test('list prod only with depth 2', async t => { }) test('list with depth 1', async t => { - t.equal(await list([fixture], { depth: 1, lockfileDirectory: fixture }), stripIndent` + t.equal(await list([fixture], { depth: 1, lockfileDir: fixture }), stripIndent` ${LEGEND} fixture@1.0.0 ${fixture} @@ -196,14 +196,14 @@ test('list with depth 1', async t => { }) test('list with depth -1', async t => { - t.equal(await list([fixture], { depth: -1, lockfileDirectory: fixture }), `fixture@1.0.0 ${fixture}`) + t.equal(await list([fixture], { depth: -1, lockfileDir: fixture }), `fixture@1.0.0 ${fixture}`) t.end() }) test('list with depth 1 and selected packages', async t => { t.equal( - await listForPackages(['make-dir', 'pify@2', 'sort-keys@2', 'is-negative'], [fixture], { depth: 1, lockfileDirectory: fixture }), + await listForPackages(['make-dir', 'pify@2', 'sort-keys@2', 'is-negative'], [fixture], { depth: 1, lockfileDir: fixture }), stripIndent` ${LEGEND} @@ -233,7 +233,7 @@ function compareOutputs (t: test.Test, actual: string, expected: string) { } test('list in long format', async t => { - compareOutputs(t, await list([fixture], { long: true, lockfileDirectory: fixture }), stripIndent` + compareOutputs(t, await list([fixture], { long: true, lockfileDir: fixture }), stripIndent` ${LEGEND} fixture@1.0.0 ${fixture} @@ -256,7 +256,7 @@ test('list in long format', async t => { }) test('parseable list with depth 1', async t => { - t.equal(await list([fixture], { reportAs: 'parseable', depth: 1, lockfileDirectory: fixture }), stripIndent` + t.equal(await list([fixture], { reportAs: 'parseable', depth: 1, lockfileDir: fixture }), stripIndent` ${fixture} ${path.join(fixture, 'node_modules/.pnpm/registry.npmjs.org/detect-indent/5.0.0')} ${path.join(fixture, 'node_modules/.pnpm/registry.npmjs.org/graceful-fs/4.2.2')} @@ -273,7 +273,7 @@ test('parseable list with depth 1', async t => { }) test('JSON list with depth 1', async t => { - t.equal(await list([fixture], { reportAs: 'json', depth: 1, lockfileDirectory: fixture }), JSON.stringify([{ + t.equal(await list([fixture], { reportAs: 'json', depth: 1, lockfileDir: fixture }), JSON.stringify([{ name: 'fixture', version: '1.0.0', @@ -346,7 +346,7 @@ test('JSON list with depth 1', async t => { test('JSON list with aliased dep', async t => { t.equal( - await list([fixtureWithAliasedDep], { reportAs: 'json', lockfileDirectory: fixtureWithAliasedDep }), + await list([fixtureWithAliasedDep], { reportAs: 'json', lockfileDir: fixtureWithAliasedDep }), JSON.stringify([ { name: 'with-aliased-dep', @@ -364,7 +364,7 @@ test('JSON list with aliased dep', async t => { ], null, 2), ) t.equal( - await list([fixtureWithAliasedDep], { lockfileDirectory: fixtureWithAliasedDep, long: true, reportAs: 'json' }), + await list([fixtureWithAliasedDep], { lockfileDir: fixtureWithAliasedDep, long: true, reportAs: 'json' }), JSON.stringify([{ name: 'with-aliased-dep', version: '1.0.0', @@ -392,7 +392,7 @@ test('parseable list with depth 1 and dev only', async t => { await list([fixture], { depth: 1, include: { dependencies: false, devDependencies: true, optionalDependencies: false }, - lockfileDirectory: fixture, + lockfileDir: fixture, reportAs: 'parseable', }), stripIndent` @@ -405,7 +405,7 @@ test('parseable list with depth 1 and dev only', async t => { }) test('long parseable list with depth 1', async t => { - t.equal(await list([fixture], { reportAs: 'parseable', depth: 1, lockfileDirectory: fixture, long: true }), stripIndent` + t.equal(await list([fixture], { reportAs: 'parseable', depth: 1, lockfileDir: fixture, long: true }), stripIndent` ${fixture}:fixture@1.0.0 ${path.join(fixture, 'node_modules/.pnpm/registry.npmjs.org/detect-indent/5.0.0')}:detect-indent@5.0.0 ${path.join(fixture, 'node_modules/.pnpm/registry.npmjs.org/graceful-fs/4.2.2')}:graceful-fs@4.2.2 @@ -422,7 +422,7 @@ test('long parseable list with depth 1', async t => { }) test('long parseable list with depth 1 when package has no version', async t => { - t.equal(await list([fixtureWithNoPkgVersion], { reportAs: 'parseable', depth: 1, lockfileDirectory: fixtureWithNoPkgVersion, long: true }), stripIndent` + t.equal(await list([fixtureWithNoPkgVersion], { reportAs: 'parseable', depth: 1, lockfileDir: fixtureWithNoPkgVersion, long: true }), stripIndent` ${fixtureWithNoPkgVersion}:fixture ${path.join(fixtureWithNoPkgVersion, 'node_modules/.pnpm/registry.npmjs.org/detect-indent/5.0.0')}:detect-indent@5.0.0 ${path.join(fixtureWithNoPkgVersion, 'node_modules/.pnpm/registry.npmjs.org/graceful-fs/4.2.2')}:graceful-fs@4.2.2 @@ -442,7 +442,7 @@ test('long parseable list with depth 1 when package has no name and no version', t.equal( await list( [fixtureWithNoPkgNameAndNoVersion], - { reportAs: 'parseable', depth: 1, lockfileDirectory: fixtureWithNoPkgNameAndNoVersion, long: true }, + { reportAs: 'parseable', depth: 1, lockfileDir: fixtureWithNoPkgNameAndNoVersion, long: true }, ), stripIndent` ${fixtureWithNoPkgNameAndNoVersion} @@ -462,12 +462,12 @@ test('long parseable list with depth 1 when package has no name and no version', }) test('print empty', async t => { - t.equal(await list([emptyFixture], { lockfileDirectory: emptyFixture }), `${LEGEND}\n\nempty@1.0.0 ${emptyFixture}`) + t.equal(await list([emptyFixture], { lockfileDir: emptyFixture }), `${LEGEND}\n\nempty@1.0.0 ${emptyFixture}`) t.end() }) test("don't print empty", async t => { - t.equal(await list([emptyFixture], { alwaysPrintRootPackage: false, lockfileDirectory: emptyFixture }), '') + t.equal(await list([emptyFixture], { alwaysPrintRootPackage: false, lockfileDir: emptyFixture }), '') t.end() }) @@ -711,7 +711,7 @@ test('sort list items', async (t) => { test('peer dependencies are marked', async (t) => { const fixture = path.join(__dirname, '../../dependencies-hierarchy/fixtures/with-peer') - const output = await list([fixture], { depth: 1, lockfileDirectory: fixture }) + const output = await list([fixture], { depth: 1, lockfileDir: fixture }) compareOutputs(t, output, stripIndent` ${LEGEND} @@ -731,7 +731,7 @@ test('peer dependencies are marked', async (t) => { test('peer dependencies are marked when searching', async (t) => { const fixture = path.join(__dirname, '../../dependencies-hierarchy/fixtures/with-peer') - const output = await listForPackages(['ajv'], [fixture], { depth: 1, lockfileDirectory: fixture }) + const output = await listForPackages(['ajv'], [fixture], { depth: 1, lockfileDir: fixture }) compareOutputs(t, output, stripIndent` ${LEGEND} diff --git a/packages/local-resolver/src/index.ts b/packages/local-resolver/src/index.ts index a614172a5c..58b6d4c223 100644 --- a/packages/local-resolver/src/index.ts +++ b/packages/local-resolver/src/index.ts @@ -17,7 +17,7 @@ export default async function resolveLocal ( wantedDependency: {pref: string}, opts: { prefix: string, - lockfileDirectory?: string, + lockfileDir?: string, }, ): Promise<(ResolveResult & ({ id: string, @@ -29,7 +29,7 @@ export default async function resolveLocal ( package: DependencyManifest, resolution: DirectoryResolution, })) | null> { - const spec = parsePref(wantedDependency.pref, opts.prefix, opts.lockfileDirectory || opts.prefix) + const spec = parsePref(wantedDependency.pref, opts.prefix, opts.lockfileDir || opts.prefix) if (!spec) return null if (spec.type === 'file') { diff --git a/packages/local-resolver/src/parsePref.ts b/packages/local-resolver/src/parsePref.ts index d3affae626..d88ed77455 100644 --- a/packages/local-resolver/src/parsePref.ts +++ b/packages/local-resolver/src/parsePref.ts @@ -20,10 +20,10 @@ export interface LocalPackageSpec { export default function parsePref ( pref: string, importerPrefix: string, - lockfileDirectory: string, + lockfileDir: string, ): LocalPackageSpec | null { if (pref.startsWith('link:')) { - return fromLocal(pref, importerPrefix, lockfileDirectory, 'directory') + return fromLocal(pref, importerPrefix, lockfileDir, 'directory') } if (pref.endsWith('.tgz') || pref.endsWith('.tar.gz') @@ -33,7 +33,7 @@ export default function parsePref ( || isFilespec.test(pref) ) { const type = isFilename.test(pref) ? 'file' : 'directory' - return fromLocal(pref, importerPrefix, lockfileDirectory, type) + return fromLocal(pref, importerPrefix, lockfileDir, type) } if (pref.startsWith('path:')) { const err = new PnpmError('PATH_IS_UNSUPPORTED_PROTOCOL', 'Local dependencies via `path:` protocol are not supported. ' + @@ -50,7 +50,7 @@ export default function parsePref ( function fromLocal ( pref: string, importerPrefix: string, - lockfileDirectory: string, + lockfileDir: string, type: 'file' | 'directory', ): LocalPackageSpec { if (!importerPrefix) importerPrefix = process.cwd() @@ -76,9 +76,9 @@ function fromLocal ( } const dependencyPath = normalize(path.relative(importerPrefix, fetchSpec)) - const id = type === 'directory' || importerPrefix === lockfileDirectory + const id = type === 'directory' || importerPrefix === lockfileDir ? `${protocol}${dependencyPath}` - : `${protocol}${normalize(path.relative(lockfileDirectory, fetchSpec))}` + : `${protocol}${normalize(path.relative(lockfileDir, fetchSpec))}` return { dependencyPath, diff --git a/packages/local-resolver/test/index.ts b/packages/local-resolver/test/index.ts index 727ffb9a30..970f882794 100644 --- a/packages/local-resolver/test/index.ts +++ b/packages/local-resolver/test/index.ts @@ -53,7 +53,7 @@ test('resolve file', async t => { test("resolve file when lockfile directory differs from the package's dir", async t => { const wantedDependency = { pref: './pnpm-local-resolver-0.1.1.tgz' } const resolveResult = await resolveFromLocal(wantedDependency, { - lockfileDirectory: path.join(__dirname, '..'), + lockfileDir: path.join(__dirname, '..'), prefix: __dirname, }) diff --git a/packages/lockfile-file/src/getLockfileImporterId.ts b/packages/lockfile-file/src/getLockfileImporterId.ts index 04e3ca9f03..bf4c9e7148 100644 --- a/packages/lockfile-file/src/getLockfileImporterId.ts +++ b/packages/lockfile-file/src/getLockfileImporterId.ts @@ -1,4 +1,4 @@ import normalize = require('normalize-path') import path = require('path') -export default (lockfileDirectory: string, prefix: string): string => normalize(path.relative(lockfileDirectory, prefix)) || '.' +export default (lockfileDir: string, prefix: string): string => normalize(path.relative(lockfileDir, prefix)) || '.' diff --git a/packages/outdated/src/index.ts b/packages/outdated/src/index.ts index afbee19e63..f21c3eedc8 100644 --- a/packages/outdated/src/index.ts +++ b/packages/outdated/src/index.ts @@ -30,12 +30,12 @@ export default async function outdated ( manifest: ImporterManifest, prefix: string, getLatestManifest: GetLatestManifestFunction, - lockfileDirectory: string, + lockfileDir: string, wantedLockfile: Lockfile, }, ): Promise { if (packageHasNoDeps(opts.manifest)) return [] - const importerId = getLockfileImporterId(opts.lockfileDirectory, opts.prefix) + const importerId = getLockfileImporterId(opts.lockfileDir, opts.prefix) const currentLockfile = opts.currentLockfile || { importers: { [importerId]: {} } } const outdated: OutdatedPackage[] = [] diff --git a/packages/outdated/test/index.ts b/packages/outdated/test/index.ts index 78547f002f..dbed2c9f63 100644 --- a/packages/outdated/test/index.ts +++ b/packages/outdated/test/index.ts @@ -72,7 +72,7 @@ test('outdated()', async (t) => { }, }, getLatestManifest, - lockfileDirectory: 'project', + lockfileDir: 'project', manifest: { name: 'wanted-shrinkwrap', version: '1.0.0', @@ -203,7 +203,7 @@ test('outdated() should return deprecated package even if its current version is const outdatedPkgs = await outdated({ currentLockfile: lockfile, getLatestManifest, - lockfileDirectory: 'project', + lockfileDir: 'project', manifest: { name: 'wanted-shrinkwrap', version: '1.0.0', @@ -273,7 +273,7 @@ test('using a matcher', async (t) => { }, }, getLatestManifest, - lockfileDirectory: 'wanted-shrinkwrap', + lockfileDir: 'wanted-shrinkwrap', manifest: { name: 'wanted-shrinkwrap', version: '1.0.0', @@ -372,7 +372,7 @@ test('outdated() aliased dependency', async (t) => { }, }, getLatestManifest, - lockfileDirectory: 'project', + lockfileDir: 'project', manifest: { name: 'wanted-shrinkwrap', version: '1.0.0', diff --git a/packages/package-requester/src/packageRequester.ts b/packages/package-requester/src/packageRequester.ts index c73b3eb67c..006a4fb502 100644 --- a/packages/package-requester/src/packageRequester.ts +++ b/packages/package-requester/src/packageRequester.ts @@ -133,7 +133,7 @@ async function resolveAndFetch ( const resolveResult = await ctx.requestsQueue.add(() => ctx.resolve(wantedDependency, { defaultTag: options.defaultTag, localPackages: options.localPackages, - lockfileDirectory: options.lockfileDirectory, + lockfileDir: options.lockfileDir, preferredVersions: options.preferredVersions, prefix: options.prefix, registry: options.registry, @@ -189,7 +189,7 @@ async function resolveAndFetch ( body: { cacheByEngine: options.sideEffectsCache ? await getCacheByEngine(ctx.storeDir, id) : new Map(), id, - inStoreLocation: path.join(ctx.storeDir, pkgIdToFilename(id, options.lockfileDirectory)), + inStoreLocation: path.join(ctx.storeDir, pkgIdToFilename(id, options.lockfileDir)), isLocal: false as const, latest, manifest: pkg, @@ -206,7 +206,7 @@ async function resolveAndFetch ( force: forceFetch, pkgId: id, pkgName: pkg && pkg.name, - prefix: options.lockfileDirectory, + prefix: options.lockfileDir, resolution: resolution, }) diff --git a/packages/package-requester/test/index.ts b/packages/package-requester/test/index.ts index 71e443994a..4e7550c32e 100644 --- a/packages/package-requester/test/index.ts +++ b/packages/package-requester/test/index.ts @@ -50,7 +50,7 @@ test('request package', async t => { const prefix = tempy.directory() const pkgResponse = await requestPackage({ alias: 'is-positive', pref: '1.0.0' }, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -101,7 +101,7 @@ test('request package but skip fetching', async t => { const prefix = tempy.directory() const pkgResponse = await requestPackage({ alias: 'is-positive', pref: '1.0.0' }, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -151,7 +151,7 @@ test('request package but skip fetching, when resolution is already available', tarball: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz', }, downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -200,7 +200,7 @@ test('refetch local tarball if its integrity has changed', async t => { const requestPackageOpts = { currentPackageId: pkgId, downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -296,7 +296,7 @@ test('refetch local tarball if its integrity has changed. The requester does not const storeDir = path.join(__dirname, '..', '.store') const requestPackageOpts = { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -573,7 +573,7 @@ test('always return a package manifest in the response', async t => { { const pkgResponse = await requestPackage({ alias: 'is-positive', pref: '1.0.0' }, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -592,7 +592,7 @@ test('always return a package manifest in the response', async t => { tarball: 'https://registry.npmjs.org/is-positive/-/is-positive-1.0.0.tgz', }, downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, diff --git a/packages/package-store/src/storeController/index.ts b/packages/package-store/src/storeController/index.ts index 0acaa790d7..6df2b54853 100644 --- a/packages/package-store/src/storeController/index.ts +++ b/packages/package-store/src/storeController/index.ts @@ -73,7 +73,7 @@ export default async function ( packageId: string, packageName: string, opts: { - lockfileDirectory: string, + lockfileDir: string, targetEngine?: string, } ) { @@ -88,7 +88,7 @@ export default async function ( } return { - directory: path.join(initOpts.storeDir, pkgIdToFilename(packageId, opts.lockfileDirectory), 'node_modules', packageName), + directory: path.join(initOpts.storeDir, pkgIdToFilename(packageId, opts.lockfileDir), 'node_modules', packageName), isBuilt: false, } } diff --git a/packages/pnpm/src/cmd/help.ts b/packages/pnpm/src/cmd/help.ts index 24e27883ca..c8a417a8c7 100644 --- a/packages/pnpm/src/cmd/help.ts +++ b/packages/pnpm/src/cmd/help.ts @@ -126,7 +126,7 @@ function getHelpText (command: string) { }, { description: `The directory in which the ${WANTED_LOCKFILE} of the package will be created. Several projects may share a single lockfile`, - name: '--lockfile-directory ', + name: '--lockfile-dir ', }, { description: 'Dependencies inside node_modules have access only to their listed dependencies', diff --git a/packages/pnpm/src/cmd/install.ts b/packages/pnpm/src/cmd/install.ts index 12da95e4b7..41ca953cd2 100644 --- a/packages/pnpm/src/cmd/install.ts +++ b/packages/pnpm/src/cmd/install.ts @@ -45,7 +45,7 @@ export default async function installCmd ( : undefined if (!opts.ignorePnpmfile) { - opts.hooks = requireHooks(opts.lockfileDirectory || workingDir, opts) + opts.hooks = requireHooks(opts.lockfileDir || workingDir, opts) } const store = await createStoreController(opts) const installOpts = { diff --git a/packages/pnpm/src/cmd/list.ts b/packages/pnpm/src/cmd/list.ts index 9beb396709..125f001306 100644 --- a/packages/pnpm/src/cmd/list.ts +++ b/packages/pnpm/src/cmd/list.ts @@ -7,7 +7,7 @@ export default async function ( opts: Config & { alwaysPrintRootPackage?: boolean, depth?: number, - lockfileDirectory?: string, + lockfileDir?: string, long?: boolean, parseable?: boolean, }, @@ -15,7 +15,7 @@ export default async function ( ) { const output = await render([opts.workingDir], args, { ...opts, - lockfileDirectory: opts.lockfileDirectory || opts.workingDir, + lockfileDir: opts.lockfileDir || opts.workingDir, }, command) if (output) console.log(output) @@ -27,7 +27,7 @@ export async function render ( opts: Config & { alwaysPrintRootPackage?: boolean, depth?: number, - lockfileDirectory: string, + lockfileDir: string, long?: boolean, json?: boolean, parseable?: boolean, @@ -43,7 +43,7 @@ export async function render ( alwaysPrintRootPackage: opts.alwaysPrintRootPackage, depth: isWhy ? Infinity : opts.depth || 0, include: opts.include, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, long: opts.long, // tslint:disable-next-line: no-unnecessary-type-assertion reportAs: (opts.parseable ? 'parseable' : (opts.json ? 'json' : 'tree')) as ('parseable' | 'json' | 'tree'), diff --git a/packages/pnpm/src/cmd/outdated.ts b/packages/pnpm/src/cmd/outdated.ts index d2cb35ff47..e8d955a656 100644 --- a/packages/pnpm/src/cmd/outdated.ts +++ b/packages/pnpm/src/cmd/outdated.ts @@ -79,7 +79,7 @@ export interface OutdatedOptions { proxy?: string rawConfig: object registries: Registries - lockfileDirectory?: string + lockfileDir?: string store?: string strictSsl: boolean table?: boolean @@ -271,18 +271,18 @@ export async function outdatedDependenciesOfWorkspacePackages ( args: string[], opts: OutdatedOptions, ) { - const lockfileDirectory = opts.lockfileDirectory || opts.workingDir - const modules = await readModulesManifest(path.join(lockfileDirectory, 'node_modules')) - const virtualStoreDir = modules?.virtualStoreDir || path.join(lockfileDirectory, 'node_modules/.pnpm') + const lockfileDir = opts.lockfileDir || opts.workingDir + const modules = await readModulesManifest(path.join(lockfileDir, 'node_modules')) + const virtualStoreDir = modules?.virtualStoreDir || path.join(lockfileDir, 'node_modules/.pnpm') const currentLockfile = await readCurrentLockfile(virtualStoreDir, { ignoreIncompatible: false }) - const wantedLockfile = await readWantedLockfile(lockfileDirectory, { ignoreIncompatible: false }) || currentLockfile + const wantedLockfile = await readWantedLockfile(lockfileDir, { ignoreIncompatible: false }) || currentLockfile if (!wantedLockfile) { throw new PnpmError('OUTDATED_NO_LOCKFILE', 'No lockfile in this directory. Run `pnpm install` to generate one.') } const storeDir = await storePath(opts.workingDir, opts.store) const getLatestManifest = createLatestManifestGetter({ ...opts, - lockfileDirectory, + lockfileDir, storeDir, }) return Promise.all(pkgs.map(async ({ manifest, path }) => { @@ -292,13 +292,13 @@ export async function outdatedDependenciesOfWorkspacePackages ( outdatedPackages: await outdated({ currentLockfile, getLatestManifest, - lockfileDirectory, + lockfileDir, manifest, match, prefix: path, wantedLockfile, }), - prefix: getLockfileImporterId(lockfileDirectory, path), + prefix: getLockfileImporterId(lockfileDir, path), } })) } diff --git a/packages/pnpm/src/cmd/recursive/index.ts b/packages/pnpm/src/cmd/recursive/index.ts index 9a86ddc50f..ee3b20cfc1 100644 --- a/packages/pnpm/src/cmd/recursive/index.ts +++ b/packages/pnpm/src/cmd/recursive/index.ts @@ -241,15 +241,15 @@ export async function recursive ( if (cmdFullName !== 'rebuild') { // For a workspace with shared lockfile - if (opts.lockfileDirectory && ['add', 'install', 'remove', 'update'].includes(cmdFullName)) { + if (opts.lockfileDir && ['add', 'install', 'remove', 'update'].includes(cmdFullName)) { if (opts.hoistPattern) { - logger.info({ message: 'Only the root workspace package is going to have hoisted dependencies in node_modules', prefix: opts.lockfileDirectory }) + logger.info({ message: 'Only the root workspace package is going to have hoisted dependencies in node_modules', prefix: opts.lockfileDir }) } let importers = await getImporters() - const isFromWorkspace = isSubdir.bind(null, opts.lockfileDirectory) + const isFromWorkspace = isSubdir.bind(null, opts.lockfileDir) importers = await pFilter(importers, async ({ prefix }: { prefix: string }) => isFromWorkspace(await fs.realpath(prefix))) if (importers.length === 0) return true - const hooks = opts.ignorePnpmfile ? {} : requireHooks(opts.lockfileDirectory, opts) + const hooks = opts.ignorePnpmfile ? {} : requireHooks(opts.lockfileDir, opts) const mutation = cmdFullName === 'remove' ? 'uninstallSome' : (input.length === 0 && !updateToLatest ? 'install' : 'installSome') const writeImporterManifests = [] as Array<(manifest: ImporterManifest) => Promise> const mutatedImporters = [] as MutatedImporter[] @@ -423,7 +423,7 @@ export async function recursive ( ? rebuild : (importers: any, opts: any) => rebuildPkgs(importers, input, opts) // tslint:disable-line ) - if (opts.lockfileDirectory) { + if (opts.lockfileDir) { const importers = await getImporters() await action( importers, diff --git a/packages/pnpm/src/cmd/recursive/list.ts b/packages/pnpm/src/cmd/recursive/list.ts index 71b0ff4252..2839516374 100644 --- a/packages/pnpm/src/cmd/recursive/list.ts +++ b/packages/pnpm/src/cmd/recursive/list.ts @@ -11,14 +11,14 @@ export default async ( depth?: number, long?: boolean, parseable?: boolean, - lockfileDirectory?: string, + lockfileDir?: string, }, ) => { - if (opts.lockfileDirectory) { + if (opts.lockfileDir) { console.log(await renderList(pkgs.map((pkg) => pkg.path), args, { ...opts, alwaysPrintRootPackage: opts.depth === -1, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, }, cmd)) return } @@ -28,7 +28,7 @@ export default async ( const output = await renderList([path], args, { ...opts, alwaysPrintRootPackage: opts.depth === -1, - lockfileDirectory: opts.lockfileDirectory || path, + lockfileDir: opts.lockfileDir || path, }, cmd) if (!output) continue outputs.push(output) diff --git a/packages/pnpm/src/cmd/recursive/outdated.ts b/packages/pnpm/src/cmd/recursive/outdated.ts index f22be7c2fd..09189a3fe1 100644 --- a/packages/pnpm/src/cmd/recursive/outdated.ts +++ b/packages/pnpm/src/cmd/recursive/outdated.ts @@ -45,7 +45,7 @@ export default async ( opts: OutdatedOptions, ) => { const outdatedByNameAndType = {} as Record - if (opts.lockfileDirectory) { + if (opts.lockfileDir) { const outdatedPackagesByProject = await outdatedDependenciesOfWorkspacePackages(pkgs, args, opts) for (let { prefix, outdatedPackages, manifest } of outdatedPackagesByProject) { outdatedPackages.forEach((outdatedPkg) => { @@ -59,7 +59,7 @@ export default async ( } else { await Promise.all(pkgs.map(async ({ manifest, path }) => { const { outdatedPackages } = ( - await outdatedDependenciesOfWorkspacePackages([{ manifest, path }], args, { ...opts, lockfileDirectory: path }) + await outdatedDependenciesOfWorkspacePackages([{ manifest, path }], args, { ...opts, lockfileDir: path }) )[0] outdatedPackages.forEach((outdatedPkg) => { const key = JSON.stringify([outdatedPkg.packageName, outdatedPkg.belongsTo]) diff --git a/packages/pnpm/src/cmd/remove.ts b/packages/pnpm/src/cmd/remove.ts index 8fc6b92bb4..86bf16f5b2 100644 --- a/packages/pnpm/src/cmd/remove.ts +++ b/packages/pnpm/src/cmd/remove.ts @@ -17,7 +17,7 @@ export default async function removeCmd ( storeDir: store.dir, }) if (!opts.ignorePnpmfile) { - opts.hooks = requireHooks(opts.lockfileDirectory || opts.workingDir, opts) + opts.hooks = requireHooks(opts.lockfileDir || opts.workingDir, opts) } removeOpts['localPackages'] = opts.linkWorkspacePackages && opts.workspacePrefix ? arrayOfLocalPackagesToMap(await findWorkspacePackages(opts.workspacePrefix, opts)) diff --git a/packages/pnpm/src/createLatestManifestGetter.ts b/packages/pnpm/src/createLatestManifestGetter.ts index f118fa7957..2b8b1bbd77 100644 --- a/packages/pnpm/src/createLatestManifestGetter.ts +++ b/packages/pnpm/src/createLatestManifestGetter.ts @@ -15,7 +15,7 @@ export default function ( httpsProxy?: string, key?: string, localAddress?: string, - lockfileDirectory: string, + lockfileDir: string, offline?: boolean, workingDir: string, proxy?: string, @@ -40,14 +40,14 @@ export default function ( export async function getLatestManifest ( resolve: ResolveFunction, opts: { - lockfileDirectory: string, + lockfileDir: string, workingDir: string, registries: Registries, }, packageName: string, ) { const resolution = await resolve({ alias: packageName, pref: 'latest' }, { - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, preferredVersions: {}, prefix: opts.workingDir, registry: pickRegistryForPackage(opts.registries, packageName), diff --git a/packages/pnpm/src/main.ts b/packages/pnpm/src/main.ts index e4fd5bf6ec..cd5519f350 100644 --- a/packages/pnpm/src/main.ts +++ b/packages/pnpm/src/main.ts @@ -83,7 +83,8 @@ type CLI_OPTIONS = 'access' | 'latest' | 'link-workspace-packages' | 'lock' - | 'lockfile-directory' + | 'lockfile-dir' + | 'lockfile-directory' // TODO: deprecate this flag | 'lockfile-only' | 'lockfile' | 'long' @@ -148,6 +149,7 @@ const INSTALL_CLI_OPTIONS = new Set([ 'independent-leaves', 'link-workspace-packages', 'lock', + 'lockfile-dir', 'lockfile-directory', 'lockfile-only', 'lockfile', @@ -194,6 +196,7 @@ const SUPPORTED_CLI_OPTIONS: Record> = 'independent-leaves', 'link-workspace-packages', 'lock', + 'lockfile-dir', 'lockfile-directory', 'lockfile-only', 'lockfile', @@ -286,6 +289,7 @@ const SUPPORTED_CLI_OPTIONS: Record> = 'force', 'global-pnpmfile', 'global', + 'lockfile-dir', 'lockfile-directory', 'lockfile-only', 'lockfile', @@ -336,6 +340,7 @@ const SUPPORTED_CLI_OPTIONS: Record> = 'ignore-pnpmfile', 'ignore-scripts', 'latest', + 'lockfile-dir', 'lockfile-directory', 'lockfile-only', 'lockfile', @@ -451,7 +456,8 @@ export default async function run (inputArgv: string[]) { 'C': ['--working-dir'], 'prefix': ['--working-dir'], 'store': ['--store-dir'], - 'shrinkwrap-directory': ['--lockfile-directory'], + 'lockfile-directory': ['--lockfile-dir'], + 'shrinkwrap-directory': ['--lockfile-dir'], 'shrinkwrap-only': ['--lockfile-only'], 'shared-workspace-shrinkwrap': ['--shared-workspace-lockfile'], 'frozen-shrinkwrap': ['--frozen-lockfile'], diff --git a/packages/pnpm/test/unit-tests/getLatestManifest.spec.ts b/packages/pnpm/test/unit-tests/getLatestManifest.spec.ts index 35a07eb39c..965081c05f 100644 --- a/packages/pnpm/test/unit-tests/getLatestManifest.spec.ts +++ b/packages/pnpm/test/unit-tests/getLatestManifest.spec.ts @@ -10,7 +10,7 @@ test('getLatestManifest()', async (t: tape.Test) => { t.plan(4) const opts = { - lockfileDirectory: '', + lockfileDir: '', registries: { '@scope': 'https://pnpm.js.org/', 'default': 'https://registry.npmjs.org/', diff --git a/packages/read-importers-context/src/index.ts b/packages/read-importers-context/src/index.ts index 1c8ddcdf3c..a764f3436d 100644 --- a/packages/read-importers-context/src/index.ts +++ b/packages/read-importers-context/src/index.ts @@ -14,7 +14,7 @@ export interface ImporterOptions { export default async function ( importers: (ImporterOptions & T)[], - lockfileDirectory: string, + lockfileDir: string, ): Promise<{ currentHoistPattern?: string[], hoist?: boolean, @@ -32,7 +32,7 @@ export default async function ( shamefullyHoist?: boolean, skipped: Set, }> { - const rootModulesDir = await realNodeModulesDir(lockfileDirectory) + const rootModulesDir = await realNodeModulesDir(lockfileDir) const modules = await readModulesYaml(rootModulesDir) return { currentHoistPattern: modules?.hoistPattern || undefined, @@ -41,7 +41,7 @@ export default async function ( importers: await Promise.all( importers.map(async (importer) => { const modulesDir = await realNodeModulesDir(importer.prefix) - const importerId = getLockfileImporterId(lockfileDirectory, importer.prefix) + const importerId = getLockfileImporterId(lockfileDir, importer.prefix) return { ...importer, diff --git a/packages/resolve-dependencies/src/index.ts b/packages/resolve-dependencies/src/index.ts index f0805782d6..0c4bb58f40 100644 --- a/packages/resolve-dependencies/src/index.ts +++ b/packages/resolve-dependencies/src/index.ts @@ -49,7 +49,7 @@ export default async function ( resolutionStrategy?: 'fast' | 'fewer-dependencies', pnpmVersion: string, sideEffectsCache: boolean, - lockfileDirectory: string, + lockfileDir: string, storeController: StoreController, tag: string, virtualStoreDir: string, @@ -70,7 +70,7 @@ export default async function ( dryRun: opts.dryRun, engineStrict: opts.engineStrict, force: opts.force, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, nodeVersion: opts.nodeVersion, outdatedDependencies: {} as {[pkgId: string]: string}, pendingNodes: [] as PendingNode[], diff --git a/packages/resolve-dependencies/src/resolveDependencies.ts b/packages/resolve-dependencies/src/resolveDependencies.ts index fcbec4df79..d8bafb557c 100644 --- a/packages/resolve-dependencies/src/resolveDependencies.ts +++ b/packages/resolve-dependencies/src/resolveDependencies.ts @@ -121,7 +121,7 @@ export interface ResolutionContext { wantedLockfile: Lockfile, updateLockfile: boolean, currentLockfile: Lockfile, - lockfileDirectory: string, + lockfileDir: string, sideEffectsCache: boolean, storeController: StoreController, // the IDs of packages that are not installable @@ -535,7 +535,7 @@ async function resolveDependency ( defaultTag: ctx.defaultTag, downloadPriority: -options.currentDepth, localPackages: options.localPackages, - lockfileDirectory: ctx.lockfileDirectory, + lockfileDir: ctx.lockfileDir, preferredVersions: options.preferredVersions, prefix: ctx.prefix, registry: wantedDependency.alias && pickRegistryForPackage(ctx.registries, wantedDependency.alias) || ctx.registries.default, @@ -689,7 +689,7 @@ async function resolveDependency ( if (isNew) { progressLogger.debug({ packageId: pkgResponse.body.id, - requester: ctx.lockfileDirectory, + requester: ctx.lockfileDir, status: 'resolved', }) if (pkgResponse.files) { @@ -697,7 +697,7 @@ async function resolveDependency ( .then((fetchResult: PackageFilesResponse) => { progressLogger.debug({ packageId: pkgResponse.body.id, - requester: ctx.lockfileDirectory, + requester: ctx.lockfileDir, status: fetchResult.fromStore ? 'found_in_store' : 'fetched', }) diff --git a/packages/resolver-base/src/index.ts b/packages/resolver-base/src/index.ts index 2dd992b6ce..bf3d7c322f 100644 --- a/packages/resolver-base/src/index.ts +++ b/packages/resolver-base/src/index.ts @@ -47,7 +47,7 @@ export interface LocalPackages { export interface ResolveOptions { defaultTag?: string, localPackages?: LocalPackages, - lockfileDirectory: string, + lockfileDir: string, preferredVersions: { [packageName: string]: { selector: string, diff --git a/packages/server/src/connectStoreController.ts b/packages/server/src/connectStoreController.ts index 926ef94362..c7aa6b53a1 100644 --- a/packages/server/src/connectStoreController.ts +++ b/packages/server/src/connectStoreController.ts @@ -38,7 +38,7 @@ export default function ( packageId: string, packageName: string, opts: { - lockfileDirectory: string, + lockfileDir: string, targetEngine?: string, }, ): Promise<{ directory: string, isBuilt: boolean }> => { diff --git a/packages/server/test/index.ts b/packages/server/test/index.ts index 41dfbd2b52..1f665a8c44 100644 --- a/packages/server/test/index.ts +++ b/packages/server/test/index.ts @@ -52,7 +52,7 @@ test('server', async t => { { alias: 'is-positive', pref: '1.0.0' }, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -116,7 +116,7 @@ test('fetchPackage', async t => { t.deepEqual( await storeCtrl.getPackageLocation(pkgId, 'is-positive', { - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), }), { directory: path.join(storeDir, pkgId, 'node_modules', 'is-positive'), @@ -146,7 +146,7 @@ test('server errors should arrive to the client', async t => { { alias: 'not-an-existing-package', pref: '1.0.0' }, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, @@ -315,7 +315,7 @@ test('find package usages', async t => { dependency, { downloadPriority: 0, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry, diff --git a/packages/store-controller-types/src/index.ts b/packages/store-controller-types/src/index.ts index e476b152c1..3f36473100 100644 --- a/packages/store-controller-types/src/index.ts +++ b/packages/store-controller-types/src/index.ts @@ -32,7 +32,7 @@ export interface StoreController { packageId: string, packageName: string, opts: { - lockfileDirectory: string, + lockfileDir: string, targetEngine?: string, }, ): Promise<{ directory: string, isBuilt: boolean }>, @@ -98,7 +98,7 @@ export interface RequestPackageOptions { currentResolution?: Resolution, defaultTag?: string, downloadPriority: number, - lockfileDirectory: string, + lockfileDir: string, localPackages?: LocalPackages, prefix: string, preferredVersions: { diff --git a/packages/supi/src/getContext/index.ts b/packages/supi/src/getContext/index.ts index fc8376f9e7..05e1a8bb66 100644 --- a/packages/supi/src/getContext/index.ts +++ b/packages/supi/src/getContext/index.ts @@ -38,7 +38,7 @@ export interface PnpmContext { rootModulesDir: string, hoistPattern: string[] | undefined, hoistedModulesDir: string, - lockfileDirectory: string, + lockfileDir: string, virtualStoreDir: string, shamefullyHoist: boolean, skipped: Set, @@ -59,7 +59,7 @@ export default async function getContext ( force: boolean, forceSharedLockfile: boolean, extraBinPaths: string[], - lockfileDirectory: string, + lockfileDir: string, hooks?: { readPackage?: ReadPackageHook, }, @@ -79,15 +79,15 @@ export default async function getContext ( forceShamefullyHoist?: boolean, }, ): Promise> { - const importersContext = await readImportersContext(importers, opts.lockfileDirectory) - const virtualStoreDir = pathAbsolute(opts.virtualStoreDir ?? 'node_modules/.pnpm', opts.lockfileDirectory) + const importersContext = await readImportersContext(importers, opts.lockfileDir) + const virtualStoreDir = pathAbsolute(opts.virtualStoreDir ?? 'node_modules/.pnpm', opts.lockfileDir) if (importersContext.modules) { await validateNodeModules(importersContext.modules, importersContext.importers, { currentHoistPattern: importersContext.currentHoistPattern, force: opts.force, include: opts.include, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, storeDir: opts.storeDir, virtualStoreDir, @@ -135,7 +135,7 @@ export default async function getContext ( importers: importersContext.importers, include: opts.include || importersContext.include, independentLeaves: Boolean(typeof importersContext.independentLeaves === 'undefined' ? opts.independentLeaves : importersContext.independentLeaves), - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, modulesFile: importersContext.modules, pendingBuilds: importersContext.pendingBuilds, registries: { @@ -151,7 +151,7 @@ export default async function getContext ( force: opts.force, forceSharedLockfile: opts.forceSharedLockfile, importers: importersContext.importers, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, registry: opts.registries.default, useLockfile: opts.useLockfile, virtualStoreDir, @@ -172,7 +172,7 @@ async function validateNodeModules ( currentHoistPattern?: string[], force: boolean, include?: IncludedDependencies, - lockfileDirectory: string, + lockfileDir: string, storeDir: string, virtualStoreDir: string, @@ -252,11 +252,11 @@ async function validateNodeModules ( storeDir: opts.storeDir, virtualStoreDir: opts.virtualStoreDir, }) - if (opts.lockfileDirectory !== importer.prefix && opts.include && modules.included) { + if (opts.lockfileDir !== importer.prefix && opts.include && modules.included) { for (const depsField of DEPENDENCIES_FIELDS) { if (opts.include[depsField] !== modules.included[depsField]) { throw new PnpmError('INCLUDED_DEPS_CONFLICT', - `node_modules (at "${opts.lockfileDirectory}") was installed with ${stringifyIncludedDeps(modules.included)}. ` + + `node_modules (at "${opts.lockfileDir}") was installed with ${stringifyIncludedDeps(modules.included)}. ` + `Current install wants ${stringifyIncludedDeps(opts.include)}.`, ) } @@ -308,7 +308,7 @@ export interface PnpmSingleContext { pendingBuilds: string[], registries: Registries, rootModulesDir: string, - lockfileDirectory: string, + lockfileDir: string, virtualStoreDir: string, shamefullyHoist: boolean, skipped: Set, @@ -322,7 +322,7 @@ export async function getContextForSingleImporter ( force: boolean, forceSharedLockfile: boolean, extraBinPaths: string[], - lockfileDirectory: string, + lockfileDir: string, hooks?: { readPackage?: ReadPackageHook, }, @@ -362,7 +362,7 @@ export async function getContextForSingleImporter ( prefix: opts.workingDir, }, ], - opts.lockfileDirectory, + opts.lockfileDir, ) const storeDir = opts.storeDir @@ -370,14 +370,14 @@ export async function getContextForSingleImporter ( const importer = importers[0] const modulesDir = importer.modulesDir const importerId = importer.id - const virtualStoreDir = pathAbsolute(opts.virtualStoreDir ?? 'node_modules/.pnpm', opts.lockfileDirectory) + const virtualStoreDir = pathAbsolute(opts.virtualStoreDir ?? 'node_modules/.pnpm', opts.lockfileDir) if (modules) { await validateNodeModules(modules, importers, { currentHoistPattern, force: opts.force, include: opts.include, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, storeDir: opts.storeDir, virtualStoreDir, @@ -410,7 +410,7 @@ export async function getContextForSingleImporter ( importerId, include: opts.include || include, independentLeaves: Boolean(typeof independentLeaves === 'undefined' ? opts.independentLeaves : independentLeaves), - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, manifest: opts.hooks?.readPackage?.(manifest) ?? manifest, modulesDir, modulesFile: modules, @@ -429,7 +429,7 @@ export async function getContextForSingleImporter ( force: opts.force, forceSharedLockfile: opts.forceSharedLockfile, importers: [{ id: importerId, prefix: opts.workingDir }], - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, registry: opts.registries.default, useLockfile: opts.useLockfile, virtualStoreDir, diff --git a/packages/supi/src/getContext/readLockfiles.ts b/packages/supi/src/getContext/readLockfiles.ts index 0c365e9204..38349b828a 100644 --- a/packages/supi/src/getContext/readLockfiles.ts +++ b/packages/supi/src/getContext/readLockfiles.ts @@ -28,7 +28,7 @@ export default async function ( id: string, prefix: string, }>, - lockfileDirectory: string, + lockfileDir: string, registry: string, useLockfile: boolean, virtualStoreDir: string, @@ -46,11 +46,11 @@ export default async function ( wantedVersion: LOCKFILE_VERSION, } const files = await Promise.all([ - opts.useLockfile && readWantedLockfile(opts.lockfileDirectory, lockfileOpts) - || await existsWantedLockfile(opts.lockfileDirectory) && + opts.useLockfile && readWantedLockfile(opts.lockfileDir, lockfileOpts) + || await existsWantedLockfile(opts.lockfileDir) && logger.warn({ message: `A ${WANTED_LOCKFILE} file exists. The current configuration prohibits to read or write a lockfile`, - prefix: opts.lockfileDirectory, + prefix: opts.lockfileDir, }), readCurrentLockfile(opts.virtualStoreDir, lockfileOpts), ]) diff --git a/packages/supi/src/install/extendInstallOptions.ts b/packages/supi/src/install/extendInstallOptions.ts index fa173fbcdd..c9b034d51d 100644 --- a/packages/supi/src/install/extendInstallOptions.ts +++ b/packages/supi/src/install/extendInstallOptions.ts @@ -28,7 +28,7 @@ export interface StrictInstallOptions { update: boolean, depth: number, resolutionStrategy: 'fast' | 'fewer-dependencies', - lockfileDirectory: string, + lockfileDir: string, rawConfig: object, verifyStoreIntegrity: boolean, engineStrict: boolean, @@ -100,7 +100,7 @@ const defaults = async (opts: InstallOptions) => { independentLeaves: false, localPackages: {}, lock: true, - lockfileDirectory: opts.lockfileDirectory || opts.workingDir || process.cwd(), + lockfileDir: opts.lockfileDir || opts.workingDir || process.cwd(), lockfileOnly: false, locks: path.join(opts.storeDir, '_locks'), lockStaleDuration: 5 * 60 * 1000, // 5 minutes diff --git a/packages/supi/src/install/index.ts b/packages/supi/src/install/index.ts index caa94fd37f..c5a3a65252 100644 --- a/packages/supi/src/install/index.ts +++ b/packages/supi/src/install/index.ts @@ -166,9 +166,9 @@ export async function mutateModules ( let result!: Array<{ prefix: string, manifest: ImporterManifest }> try { if (opts.lock) { - result = await lock(ctx.lockfileDirectory, _install, { + result = await lock(ctx.lockfileDir, _install, { locks: opts.locks, - prefix: ctx.lockfileDirectory, + prefix: ctx.lockfileDir, stale: opts.lockStaleDuration, storeController: opts.storeController, }) @@ -209,7 +209,7 @@ export async function mutateModules ( throw new Error(`Headless installation requires a ${WANTED_LOCKFILE} file`) } } else { - logger.info({ message: 'Lockfile is up-to-date, resolution step is skipped', prefix: opts.lockfileDirectory }) + logger.info({ message: 'Lockfile is up-to-date, resolution step is skipped', prefix: opts.lockfileDir }) await headless({ currentEngine: { nodeVersion: opts.nodeVersion, @@ -233,7 +233,7 @@ export async function mutateModules ( }>, include: opts.include, independentLeaves: opts.independentLeaves, - lockfileDirectory: ctx.lockfileDirectory, + lockfileDir: ctx.lockfileDir, ownLifecycleHooksStdio: opts.ownLifecycleHooksStdio, packageManager: opts.packageManager, pendingBuilds: ctx.pendingBuilds, @@ -579,7 +579,7 @@ export async function addDependenciesToPackage ( ], { ...opts, - lockfileDirectory: opts.lockfileDirectory || opts.workingDir, + lockfileDir: opts.lockfileDir || opts.workingDir, }) return importers[0].manifest } @@ -615,7 +615,7 @@ async function installInContext ( if (opts.lockfileOnly && ctx.existsCurrentLockfile) { logger.warn({ message: '`node_modules` is present. Lockfile only installation will make it out-of-date', - prefix: ctx.lockfileDirectory, + prefix: ctx.lockfileDir, }) } @@ -646,7 +646,7 @@ async function installInContext ( ) stageLogger.debug({ - prefix: ctx.lockfileDirectory, + prefix: ctx.lockfileDir, stage: 'resolution_started', }) @@ -680,7 +680,7 @@ async function installInContext ( force: opts.force, hooks: opts.hooks, localPackages: opts.localPackages, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, nodeVersion: opts.nodeVersion, pnpmVersion: opts.packageManager.name === 'pnpm' ? opts.packageManager.version : '', registries: opts.registries, @@ -695,7 +695,7 @@ async function installInContext ( ) stageLogger.debug({ - prefix: ctx.lockfileDirectory, + prefix: ctx.lockfileDir, stage: 'resolution_done', }) @@ -800,7 +800,7 @@ async function installInContext ( hoistPattern: ctx.hoistPattern, include: opts.include, independentLeaves: opts.independentLeaves, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, makePartialCurrentLockfile: opts.makePartialCurrentLockfile, outdatedDependencies, pruneStore: opts.pruneStore, @@ -840,7 +840,7 @@ async function installInContext ( depsToBuild: new Set(result.newDepPaths), extraBinPaths: ctx.extraBinPaths, optional: opts.include.optionalDependencies, - prefix: ctx.lockfileDirectory, + prefix: ctx.lockfileDir, rawConfig: opts.rawConfig, rootNodeModulesDir: ctx.virtualStoreDir, sideEffectsCacheWrite: opts.sideEffectsCacheWrite, @@ -854,7 +854,7 @@ async function installInContext ( const newPkgs = R.props(result.newDepPaths, result.depGraph) await linkAllBins(newPkgs, result.depGraph, { optional: opts.include.optionalDependencies, - warn: (message: string) => logger.warn({ message, prefix: opts.lockfileDirectory }), + warn: (message: string) => logger.warn({ message, prefix: opts.lockfileDir }), }) } @@ -877,7 +877,7 @@ async function installInContext ( const lockfileOpts = { forceSharedFormat: opts.forceSharedLockfile } if (opts.lockfileOnly) { - await writeWantedLockfile(ctx.lockfileDirectory, result.wantedLockfile, lockfileOpts) + await writeWantedLockfile(ctx.lockfileDir, result.wantedLockfile, lockfileOpts) } else { await Promise.all([ opts.useLockfile @@ -885,7 +885,7 @@ async function installInContext ( currentLockfile: result.currentLockfile, currentLockfileDir: ctx.virtualStoreDir, wantedLockfile: result.wantedLockfile, - wantedLockfileDir: ctx.lockfileDirectory, + wantedLockfileDir: ctx.lockfileDir, ...lockfileOpts, }) : writeCurrentLockfile(ctx.virtualStoreDir, result.currentLockfile, lockfileOpts), @@ -912,7 +912,7 @@ async function installInContext ( ]) } - summaryLogger.debug({ prefix: opts.lockfileDirectory }) + summaryLogger.debug({ prefix: opts.lockfileDir }) await opts.storeController.close() diff --git a/packages/supi/src/install/link.ts b/packages/supi/src/install/link.ts index dff3cd31d5..d51ec2274b 100644 --- a/packages/supi/src/install/link.ts +++ b/packages/supi/src/install/link.ts @@ -66,7 +66,7 @@ export default async function linkPackages ( hoistPattern?: string[], include: IncludedDependencies, independentLeaves: boolean, - lockfileDirectory: string, + lockfileDir: string, makePartialCurrentLockfile: boolean, outdatedDependencies: {[pkgId: string]: string}, pruneStore: boolean, @@ -97,7 +97,7 @@ export default async function linkPackages ( dependenciesTree, importers, independentLeaves: opts.independentLeaves, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, strictPeerDependencies: opts.strictPeerDependencies, virtualStoreDir: opts.virtualStoreDir, }) @@ -155,7 +155,7 @@ export default async function linkPackages ( hoistedAliases: opts.hoistedAliases, hoistedModulesDir: opts.hoistPattern && opts.hoistedModulesDir || undefined, include: opts.include, - lockfileDir: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, pruneStore: opts.pruneStore, registries: opts.registries, skipped: opts.skipped, @@ -165,7 +165,7 @@ export default async function linkPackages ( }) stageLogger.debug({ - prefix: opts.lockfileDirectory, + prefix: opts.lockfileDir, stage: 'importing_started', }) @@ -189,7 +189,7 @@ export default async function linkPackages ( { dryRun: opts.dryRun, force: opts.force, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, optional: opts.include.optionalDependencies, registries: opts.registries, storeController: opts.storeController, @@ -198,7 +198,7 @@ export default async function linkPackages ( ) stageLogger.debug({ - prefix: opts.lockfileDirectory, + prefix: opts.lockfileDir, stage: 'importing_done', }) @@ -314,14 +314,14 @@ export default async function linkPackages ( getIndependentPackageLocation: opts.independentLeaves ? async (packageId: string, packageName: string) => { const { directory } = await opts.storeController.getPackageLocation(packageId, packageName, { - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, targetEngine: opts.sideEffectsCacheRead && ENGINE_NAME || undefined, }) return directory } : undefined, lockfile: currentLockfile, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, modulesDir: opts.hoistedModulesDir, registries: opts.registries, virtualStoreDir: opts.virtualStoreDir, @@ -371,7 +371,7 @@ async function linkNewPackages ( force: boolean, optional: boolean, registries: Registries, - lockfileDirectory: string, + lockfileDir: string, storeController: StoreController, virtualStoreDir: string, }, @@ -393,7 +393,7 @@ async function linkNewPackages ( statsLogger.debug({ added: newDepPathsSet.size, - prefix: opts.lockfileDirectory, + prefix: opts.lockfileDir, }) const existingWithUpdatedDeps = [] @@ -425,11 +425,11 @@ async function linkNewPackages ( await Promise.all([ linkAllModules(newPkgs, depGraph, { - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, optional: opts.optional, }), linkAllModules(existingWithUpdatedDeps, depGraph, { - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, optional: opts.optional, }), linkAllPkgs(opts.storeController, newPkgs, opts), @@ -496,7 +496,7 @@ async function linkAllModules ( depNodes: DependenciesGraphNode[], depGraph: DependenciesGraph, opts: { - lockfileDirectory: string, + lockfileDir: string, optional: boolean, }, ) { @@ -522,7 +522,7 @@ async function linkAllModules ( if (childAlias === name) { logger.warn({ message: `Cannot link dependency with name ${childAlias} to ${modules}. Dependency's name should differ from the parent's name.`, - prefix: opts.lockfileDirectory, + prefix: opts.lockfileDir, }) return } diff --git a/packages/supi/src/install/resolvePeers.ts b/packages/supi/src/install/resolvePeers.ts index d6a5766532..818896b058 100644 --- a/packages/supi/src/install/resolvePeers.ts +++ b/packages/supi/src/install/resolvePeers.ts @@ -78,7 +78,7 @@ export default function ( dependenciesTree: DependenciesTree, independentLeaves: boolean, virtualStoreDir: string, - lockfileDirectory: string, + lockfileDir: string, strictPeerDependencies: boolean, }, ): { @@ -115,7 +115,7 @@ export default function ( dependenciesTree: opts.dependenciesTree, depGraph, independentLeaves: opts.independentLeaves, - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, prefix, purePkgs: new Set(), strictPeerDependencies: opts.strictPeerDependencies, @@ -154,7 +154,7 @@ function resolvePeersOfNode ( virtualStoreDir: string, purePkgs: Set, // pure packages are those that don't rely on externally resolved peers prefix: string, - lockfileDirectory: string, + lockfileDir: string, strictPeerDependencies: boolean, }, ): {[alias: string]: string} { @@ -188,7 +188,7 @@ function resolvePeersOfNode ( let modules: string let absolutePath: string - const localLocation = path.join(ctx.virtualStoreDir, pkgIdToFilename(node.resolvedPackage.id, ctx.lockfileDirectory)) + const localLocation = path.join(ctx.virtualStoreDir, pkgIdToFilename(node.resolvedPackage.id, ctx.lockfileDir)) const isPure = R.isEmpty(allResolvedPeers) if (isPure) { modules = path.join(localLocation, 'node_modules') @@ -269,7 +269,7 @@ function resolvePeersOfChildren ( depGraph: DependenciesGraph, dependenciesTree: DependenciesTree, prefix: string, - lockfileDirectory: string, + lockfileDir: string, strictPeerDependencies: boolean, }, ): {[alias: string]: string} { diff --git a/packages/supi/src/link/index.ts b/packages/supi/src/link/index.ts index 25c812ac20..a5b2279de9 100644 --- a/packages/supi/src/link/index.ts +++ b/packages/supi/src/link/index.ts @@ -50,7 +50,7 @@ export default async function link ( extraBinPaths: [], // ctx.extraBinPaths is not needed, so this is fine }) - const importerId = getLockfileImporterId(ctx.lockfileDirectory, opts.workingDir) + const importerId = getLockfileImporterId(ctx.lockfileDir, opts.workingDir) const currentLockfile = R.clone(ctx.currentLockfile) const linkedPkgs: Array<{path: string, manifest: DependencyManifest, alias: string}> = [] const specsToUpsert = [] as Array<{name: string, pref: string, saveType: DependenciesField}> @@ -108,7 +108,7 @@ export default async function link ( hoistedAliases: ctx.hoistedAliases, hoistedModulesDir: opts.hoistPattern && ctx.hoistedModulesDir || undefined, include: ctx.include, - lockfileDir: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, registries: ctx.registries, skipped: ctx.skipped, storeController: opts.storeController, @@ -149,7 +149,7 @@ export default async function link ( currentLockfile: updatedCurrentLockfile, currentLockfileDir: ctx.virtualStoreDir, wantedLockfile: updatedWantedLockfile, - wantedLockfileDir: ctx.lockfileDirectory, + wantedLockfileDir: ctx.lockfileDir, ...lockfileOpts, }) } else { @@ -228,7 +228,7 @@ export async function linkToGlobal ( if (reporter) { streamParser.on('data', reporter) } - maybeOpts.lockfileDirectory = maybeOpts.lockfileDirectory || maybeOpts.globalPrefix + maybeOpts.lockfileDir = maybeOpts.lockfileDir || maybeOpts.globalPrefix const opts = await extendOptions(maybeOpts) const globalPkgPath = pathAbsolute(maybeOpts.globalPrefix) const newManifest = await link([linkFrom], path.join(globalPkgPath, 'node_modules'), { diff --git a/packages/supi/src/link/options.ts b/packages/supi/src/link/options.ts index 6826efa61e..f3d618c7c2 100644 --- a/packages/supi/src/link/options.ts +++ b/packages/supi/src/link/options.ts @@ -13,7 +13,7 @@ interface StrictLinkOptions { force: boolean, forceSharedLockfile: boolean, useLockfile: boolean, - lockfileDirectory: string, + lockfileDir: string, pinnedVersion: 'major' | 'minor' | 'patch', storeController: StoreController, manifest: ImporterManifest, @@ -58,7 +58,7 @@ async function defaults (opts: LinkOptions) { forceSharedLockfile: false, hoistPattern: undefined, independentLeaves: false, - lockfileDirectory: opts.lockfileDirectory || workingDir, + lockfileDir: opts.lockfileDir || workingDir, registries: DEFAULT_REGISTRIES, shamefullyHoist: false, storeController: opts.storeController, diff --git a/packages/supi/src/rebuild/extendRebuildOptions.ts b/packages/supi/src/rebuild/extendRebuildOptions.ts index 8b16c5b5e2..dab0e599a1 100644 --- a/packages/supi/src/rebuild/extendRebuildOptions.ts +++ b/packages/supi/src/rebuild/extendRebuildOptions.ts @@ -8,7 +8,7 @@ import { ReporterFunction } from '../types' export interface StrictRebuildOptions { childConcurrency: number, extraBinPaths: string[], - lockfileDirectory: string, + lockfileDir: string, sideEffectsCacheRead: boolean, storeDir: string, // TODO: remove this property storeController: StoreController, @@ -43,14 +43,14 @@ const defaults = async (opts: RebuildOptions) => { version: pnpmPkgJson.version, } const workingDir = opts.workingDir || process.cwd() - const lockfileDirectory = opts.lockfileDirectory || workingDir + const lockfileDir = opts.lockfileDir || workingDir return { bin: path.join(workingDir, 'node_modules', '.bin'), childConcurrency: 5, development: true, force: false, forceSharedLockfile: false, - lockfileDirectory, + lockfileDir, optional: true, packageManager, pending: false, diff --git a/packages/supi/src/rebuild/index.ts b/packages/supi/src/rebuild/index.ts index 9c8dfcce62..1294b42db6 100644 --- a/packages/supi/src/rebuild/index.ts +++ b/packages/supi/src/rebuild/index.ts @@ -287,11 +287,11 @@ async function _rebuild ( const pkgInfo = nameVerFromPkgSnapshot(relDepPath, pkgSnapshot) const independent = ctx.independentLeaves && packageIsIndependent(pkgSnapshot) const pkgRoot = !independent - ? path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDirectory), 'node_modules', pkgInfo.name) + ? path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDir), 'node_modules', pkgInfo.name) : await ( async () => { const { directory } = await opts.storeController.getPackageLocation(pkgSnapshot.id || depPath, pkgInfo.name, { - lockfileDirectory: opts.lockfileDirectory, + lockfileDir: opts.lockfileDir, targetEngine: opts.sideEffectsCacheRead && !opts.force && ENGINE_NAME || undefined, }) return directory @@ -299,7 +299,7 @@ async function _rebuild ( )() try { if (!independent) { - const modules = path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDirectory), 'node_modules') + const modules = path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDir), 'node_modules') const binPath = path.join(pkgRoot, 'node_modules', '.bin') await linkBins(modules, binPath, { warn }) } @@ -345,7 +345,7 @@ async function _rebuild ( const depPath = dp.resolve(opts.registries, relDepPath) const pkgSnapshot = pkgSnapshots[relDepPath] const pkgInfo = nameVerFromPkgSnapshot(relDepPath, pkgSnapshot) - const modules = path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDirectory), 'node_modules') + const modules = path.join(ctx.virtualStoreDir, pkgIdToFilename(depPath, opts.lockfileDir), 'node_modules') const binPath = path.join(modules, pkgInfo.name, 'node_modules', '.bin') return linkBins(modules, binPath, { warn }) })), diff --git a/packages/supi/src/storeAdd.ts b/packages/supi/src/storeAdd.ts index 57175fbe0a..94971e653d 100644 --- a/packages/supi/src/storeAdd.ts +++ b/packages/supi/src/storeAdd.ts @@ -40,7 +40,7 @@ export default async function ( try { const pkgResponse = await opts.storeController.requestPackage(dep, { downloadPriority: 1, - lockfileDirectory: prefix, + lockfileDir: prefix, preferredVersions: {}, prefix, registry: dep.alias && pickRegistryForPackage(registries, dep.alias) || registries.default, diff --git a/packages/supi/src/storeStatus/extendStoreStatusOptions.ts b/packages/supi/src/storeStatus/extendStoreStatusOptions.ts index cc98064776..afbd655ffe 100644 --- a/packages/supi/src/storeStatus/extendStoreStatusOptions.ts +++ b/packages/supi/src/storeStatus/extendStoreStatusOptions.ts @@ -4,7 +4,7 @@ import path = require('path') import { ReporterFunction } from '../types' export interface StrictStoreStatusOptions { - lockfileDirectory: string, + lockfileDir: string, workingDir: string, storeDir: string, independentLeaves: boolean, @@ -26,13 +26,13 @@ export type StoreStatusOptions = Partial & const defaults = async (opts: StoreStatusOptions) => { const workingDir = opts.workingDir || process.cwd() - const lockfileDirectory = opts.lockfileDirectory || workingDir + const lockfileDir = opts.lockfileDir || workingDir return { bin: path.join(workingDir, 'node_modules', '.bin'), force: false, forceSharedLockfile: false, independentLeaves: false, - lockfileDirectory, + lockfileDir, registries: DEFAULT_REGISTRIES, shamefullyHoist: false, storeDir: opts.storeDir, diff --git a/packages/supi/test/breakingChanges.ts b/packages/supi/test/breakingChanges.ts index b1d42fec05..62f608696c 100644 --- a/packages/supi/test/breakingChanges.ts +++ b/packages/supi/test/breakingChanges.ts @@ -48,14 +48,14 @@ test("don't fail on non-compatible node_modules when forced in a workspace", asy const opts = await testDefaults({ force: true }) process.chdir('pkg') - const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDirectory: path.resolve('..') })) + const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDir: path.resolve('..') })) await rimraf('node_modules') process.chdir('..') await fs.writeFile('node_modules/.modules.yaml', `packageManager: pnpm@${3}\nstore: ${opts.storeDir}\nindependentLeaves: false\nlayoutVersion: 1`) - await install(manifest, { ...opts, workingDir: path.resolve('pkg'), lockfileDirectory: process.cwd() }) + await install(manifest, { ...opts, workingDir: path.resolve('pkg'), lockfileDir: process.cwd() }) t.pass('install did not fail') }) diff --git a/packages/supi/test/install/index.ts b/packages/supi/test/install/index.ts index 9bb29d6b29..3a2095a146 100644 --- a/packages/supi/test/install/index.ts +++ b/packages/supi/test/install/index.ts @@ -10,7 +10,7 @@ import './independentLeaves' import './installationChecks' import './lifecycleScripts' import './local' -import './lockfileDirectory' +import './lockfileDir' import './lockfileOnly' import './misc' import './multipleImporters' diff --git a/packages/supi/test/install/lockfileDirectory.ts b/packages/supi/test/install/lockfileDir.ts similarity index 86% rename from packages/supi/test/install/lockfileDirectory.ts rename to packages/supi/test/install/lockfileDir.ts index 2bebe6fffb..97082be4c2 100644 --- a/packages/supi/test/install/lockfileDirectory.ts +++ b/packages/supi/test/install/lockfileDir.ts @@ -19,7 +19,7 @@ const testSkip = promisifyTape(tape.skip) testSkip('subsequent installation uses same lockfile directory by default', async (t: tape.Test) => { prepareEmpty(t) - const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDirectory: path.resolve('..') })) + const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDir: path.resolve('..') })) await addDependenciesToPackage(manifest, ['is-negative@1.0.0'], await testDefaults()) @@ -31,12 +31,12 @@ testSkip('subsequent installation uses same lockfile directory by default', asyn testSkip('subsequent installation fails if a different lockfile directory is specified', async (t: tape.Test) => { prepareEmpty(t) - const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDirectory: path.resolve('..') })) + const manifest = await addDependenciesToPackage({}, ['is-positive@1.0.0'], await testDefaults({ lockfileDir: path.resolve('..') })) let err!: Error & {code: string} try { - await addDependenciesToPackage(manifest, ['is-negative@1.0.0'], await testDefaults({ lockfileDirectory: process.cwd() })) + await addDependenciesToPackage(manifest, ['is-negative@1.0.0'], await testDefaults({ lockfileDir: process.cwd() })) } catch (_) { err = _ } @@ -50,7 +50,7 @@ test(`tarball location is correctly saved to ${WANTED_LOCKFILE} when a shared ${ await ncp(path.join(pathToLocalPkg('tar-pkg-with-dep-2'), 'tar-pkg-with-dep-1.0.0.tgz'), 'pkg.tgz') - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') let [{ manifest }] = await mutateModules( [ { @@ -61,7 +61,7 @@ test(`tarball location is correctly saved to ${WANTED_LOCKFILE} when a shared ${ prefix: process.cwd(), }, ], - await testDefaults({ lockfileDirectory }), + await testDefaults({ lockfileDir }), ) const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -79,12 +79,12 @@ test(`tarball location is correctly saved to ${WANTED_LOCKFILE} when a shared ${ prefix: process.cwd(), } ], - await testDefaults({ frozenLockfile: true, lockfileDirectory }), + await testDefaults({ frozenLockfile: true, lockfileDir }), ) await project.has('tar-pkg-with-dep') - await rebuild([{ buildIndex: 0, manifest, prefix: process.cwd() }], await testDefaults({ lockfileDirectory })) + await rebuild([{ buildIndex: 0, manifest, prefix: process.cwd() }], await testDefaults({ lockfileDir })) t.pass('rebuild did not fail') }) diff --git a/packages/supi/test/install/multipleImporters.ts b/packages/supi/test/install/multipleImporters.ts index 30f3855a34..b82754935c 100644 --- a/packages/supi/test/install/multipleImporters.ts +++ b/packages/supi/test/install/multipleImporters.ts @@ -112,7 +112,7 @@ test('dependencies of other importers are not pruned when installing for a subse ], await testDefaults()) await addDependenciesToPackage(manifest, ['is-positive@2'], await testDefaults({ - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), workingDir: path.resolve('project-1'), })) @@ -175,7 +175,7 @@ test('dependencies of other importers are not pruned when (headless) installing const [{ manifest }] = await mutateModules(importers, await testDefaults()) await addDependenciesToPackage(manifest, ['is-positive@2'], await testDefaults({ - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), lockfileOnly: true, workingDir: path.resolve('project-1'), })) diff --git a/packages/supi/test/install/only.ts b/packages/supi/test/install/only.ts index 60802ac034..cacb5e90a3 100644 --- a/packages/supi/test/install/only.ts +++ b/packages/supi/test/install/only.ts @@ -78,7 +78,7 @@ test('install dev dependencies only', async (t: tape.Test) => { test('fail if installing different types of dependencies in a project that uses an external lockfile', async (t: tape.Test) => { const project = prepareEmpty(t) - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') const manifest = await install({ dependencies: { @@ -94,7 +94,7 @@ test('fail if installing different types of dependencies in a project that uses devDependencies: true, optionalDependencies: false, }, - lockfileDirectory, + lockfileDir, })) await project.has('inflight') @@ -109,7 +109,7 @@ test('fail if installing different types of dependencies in a project that uses devDependencies: true, optionalDependencies: true, }, - lockfileDirectory, + lockfileDir, })) } catch (_) { err = _ diff --git a/packages/supi/test/install/optionalDependencies.ts b/packages/supi/test/install/optionalDependencies.ts index 545238e472..8c65c0140d 100644 --- a/packages/supi/test/install/optionalDependencies.ts +++ b/packages/supi/test/install/optionalDependencies.ts @@ -421,7 +421,7 @@ test('skip optional dependency that does not support the current OS, when doing }, ], await testDefaults({ - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), lockfileOnly: true, }), ) @@ -437,7 +437,7 @@ test('skip optional dependency that does not support the current OS, when doing ], await testDefaults({ frozenLockfile: false, - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), preferFrozenLockfile: false, }), ) diff --git a/packages/supi/test/install/peerDependencies.ts b/packages/supi/test/install/peerDependencies.ts index 84e72796a1..12bc26cda0 100644 --- a/packages/supi/test/install/peerDependencies.ts +++ b/packages/supi/test/install/peerDependencies.ts @@ -442,7 +442,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc const reporter = sinon.spy() - await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ reporter, lockfileDirectory: path.resolve('..') })) + await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ reporter, lockfileDir: path.resolve('..') })) t.notOk(reporter.calledWithMatch({ message: 'localhost+4873/ajv-keywords/1.5.0 requires a peer of ajv@>=4.10.0 but none was installed.', @@ -469,14 +469,14 @@ test('peer dependency is grouped correctly with peer installed via separate inst prepareEmpty(t) const reporter = sinon.spy() - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') const manifest = await install({ dependencies: { 'abc': '1.0.0', }, - }, await testDefaults({ reporter, lockfileDirectory })) - await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ reporter, lockfileDirectory })) + }, await testDefaults({ reporter, lockfileDir })) + await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ reporter, lockfileDir })) t.ok(await exists(path.join('../node_modules/.pnpm/localhost+4873', 'abc', '1.0.0_peer-c@2.0.0/node_modules/dep-of-pkg-with-1-dep'))) }) @@ -485,9 +485,9 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc prepareEmpty(t) await makeDir('_') process.chdir('_') - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') - let manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ lockfileDirectory })) + let manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.5.0'], await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -503,7 +503,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc }) } - manifest = await install(manifest, await testDefaults({ lockfileDirectory })) + manifest = await install(manifest, await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -530,7 +530,7 @@ test('peer dependency is grouped with dependent when the peer is a top dependenc }, ], await testDefaults({ - lockfileDirectory, + lockfileDir, }), ) @@ -551,9 +551,9 @@ test('external lockfile: peer dependency is grouped with dependent even after a prepareEmpty(t) await makeDir('_') process.chdir('_') - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') - const manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.4.0'], await testDefaults({ lockfileDirectory })) + const manifest = await addDependenciesToPackage({}, ['ajv@4.10.4', 'ajv-keywords@1.4.0'], await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -569,7 +569,7 @@ test('external lockfile: peer dependency is grouped with dependent even after a }) } - await addDependenciesToPackage(manifest, ['ajv-keywords@1.5.0'], await testDefaults({ lockfileDirectory })) + await addDependenciesToPackage(manifest, ['ajv-keywords@1.5.0'], await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -590,9 +590,9 @@ test('external lockfile: peer dependency is grouped with dependent even after a prepareEmpty(t) await makeDir('_') process.chdir('_') - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') - const manifest = await addDependenciesToPackage({}, ['peer-c@1.0.0', 'abc-parent-with-ab@1.0.0'], await testDefaults({ lockfileDirectory })) + const manifest = await addDependenciesToPackage({}, ['peer-c@1.0.0', 'abc-parent-with-ab@1.0.0'], await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -608,7 +608,7 @@ test('external lockfile: peer dependency is grouped with dependent even after a }) } - await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ lockfileDirectory })) + await addDependenciesToPackage(manifest, ['peer-c@2.0.0'], await testDefaults({ lockfileDir })) { const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) @@ -631,14 +631,14 @@ test('regular dependencies are not removed on update from transitive packages th prepareEmpty(t) await makeDir('_') process.chdir('_') - const lockfileDirectory = path.resolve('..') + const lockfileDir = path.resolve('..') await addDistTag({ package: 'abc-parent-with-ab', version: '1.0.1', distTag: 'latest' }) await addDistTag({ package: 'peer-c', version: '1.0.0', distTag: 'latest' }) - const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c@1.0.0'], await testDefaults({ lockfileDirectory })) + const manifest = await addDependenciesToPackage({}, ['abc-grand-parent-with-c@1.0.0'], await testDefaults({ lockfileDir })) await addDistTag({ package: 'peer-c', version: '1.0.1', distTag: 'latest' }) - await install(manifest, await testDefaults({ lockfileDirectory, update: true, depth: 2 })) + await install(manifest, await testDefaults({ lockfileDir, update: true, depth: 2 })) t.ok(await exists(path.join('../node_modules/.pnpm/localhost+4873', 'abc-parent-with-ab', '1.0.1_peer-c@1.0.1/node_modules/is-positive'))) }) diff --git a/packages/supi/test/install/update.ts b/packages/supi/test/install/update.ts index 718bdcf26b..929ed5d08d 100644 --- a/packages/supi/test/install/update.ts +++ b/packages/supi/test/install/update.ts @@ -76,12 +76,12 @@ test('update dependency when external lockfile directory is used', async (t: tap await addDistTag('foo', '100.0.0', 'latest') - const lockfileDirectory = path.resolve('..') - const manifest = await addDependenciesToPackage({}, ['foo'], await testDefaults({ lockfileDirectory })) + const lockfileDir = path.resolve('..') + const manifest = await addDependenciesToPackage({}, ['foo'], await testDefaults({ lockfileDir })) await addDistTag('foo', '100.1.0', 'latest') - await install(manifest, await testDefaults({ update: true, depth: 0, lockfileDirectory })) + await install(manifest, await testDefaults({ update: true, depth: 0, lockfileDir })) const lockfile = await readYamlFile(path.join('..', WANTED_LOCKFILE)) diff --git a/packages/supi/test/link.ts b/packages/supi/test/link.ts index 76ca5951cc..c39ae7f187 100644 --- a/packages/supi/test/link.ts +++ b/packages/supi/test/link.ts @@ -271,7 +271,7 @@ test('relative link uses realpath when contained in a symlinked dir', async (t: // }, // ]) -// const opts = await testDefaults({ lockfileDirectory: path.join('..') }) +// const opts = await testDefaults({ lockfileDir: path.join('..') }) // await link([process.cwd()], path.resolve(process.cwd(), 'node_modules'), opts) // const lockfile = await readYamlFile(path.resolve('..', WANTED_LOCKFILE)) diff --git a/packages/supi/test/lockfile.ts b/packages/supi/test/lockfile.ts index 69dc1269f9..57b98f020d 100644 --- a/packages/supi/test/lockfile.ts +++ b/packages/supi/test/lockfile.ts @@ -890,7 +890,7 @@ test('lockfile file has correct format when lockfile directory does not equal th '@zkochan/foo@1.0.0', 'kevva/is-negative#1d7e288222b53a0cab90a331f1865220ec29560c', ], - await testDefaults({ save: true, lockfileDirectory: path.resolve('..'), storeDir }), + await testDefaults({ save: true, lockfileDir: path.resolve('..'), storeDir }), ) t.ok(!await exists('node_modules/.modules.yaml'), ".modules.yaml in importer's node_modules not created") @@ -932,7 +932,7 @@ test('lockfile file has correct format when lockfile directory does not equal th process.chdir('project-2') - await addDependenciesToPackage(manifest, ['is-positive'], await testDefaults({ save: true, lockfileDirectory: path.resolve('..'), storeDir })) + await addDependenciesToPackage(manifest, ['is-positive'], await testDefaults({ save: true, lockfileDir: path.resolve('..'), storeDir })) { const lockfile = await readYamlFile(path.join('..', WANTED_LOCKFILE)) @@ -1025,7 +1025,7 @@ test(`doing named installation when shared ${WANTED_LOCKFILE} exists already`, a pkg2, ['is-positive'], await testDefaults({ - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), workingDir: path.resolve('pkg2'), }), ) diff --git a/packages/supi/test/uninstall.ts b/packages/supi/test/uninstall.ts index c2d174e370..39ebd6f0a9 100644 --- a/packages/supi/test/uninstall.ts +++ b/packages/supi/test/uninstall.ts @@ -324,7 +324,7 @@ test('uninstalling a dependency from package that uses shared lockfile', async ( prefix: path.resolve('project-1'), }, ], await testDefaults({ - lockfileDirectory: process.cwd(), + lockfileDir: process.cwd(), store, }))