mirror of
https://github.com/pnpm/pnpm.git
synced 2026-05-18 22:02:53 -04:00
feat: add a new setting for telling pnpm if the env is CI (#9616)
This is an addition to https://github.com/pnpm/pnpm/pull/8190. The global virtual store isn't a good choice for CI. So, we disable it even if the setting sets `enableGlobalVirtualStore` to `true`.
This commit is contained in:
9
.changeset/pretty-needles-shake.md
Normal file
9
.changeset/pretty-needles-shake.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
"@pnpm/plugin-commands-installation": minor
|
||||||
|
"@pnpm/get-context": minor
|
||||||
|
"@pnpm/core": minor
|
||||||
|
"@pnpm/config": minor
|
||||||
|
"pnpm": minor
|
||||||
|
---
|
||||||
|
|
||||||
|
Added a new setting called `ci` for explicitly telling pnpm if the current environment is a CI or not.
|
||||||
@@ -49,6 +49,7 @@
|
|||||||
"camelcase": "catalog:",
|
"camelcase": "catalog:",
|
||||||
"camelcase-keys": "catalog:",
|
"camelcase-keys": "catalog:",
|
||||||
"can-write-to-dir": "catalog:",
|
"can-write-to-dir": "catalog:",
|
||||||
|
"ci-info": "catalog:",
|
||||||
"is-subdir": "catalog:",
|
"is-subdir": "catalog:",
|
||||||
"is-windows": "catalog:",
|
"is-windows": "catalog:",
|
||||||
"lodash.kebabcase": "catalog:",
|
"lodash.kebabcase": "catalog:",
|
||||||
|
|||||||
@@ -223,6 +223,7 @@ export interface Config extends OptionsFromRootManifest {
|
|||||||
initPackageManager: boolean
|
initPackageManager: boolean
|
||||||
initType: 'commonjs' | 'module'
|
initType: 'commonjs' | 'module'
|
||||||
dangerouslyAllowAllBuilds: boolean
|
dangerouslyAllowAllBuilds: boolean
|
||||||
|
ci: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConfigWithDeprecatedSettings extends Config {
|
export interface ConfigWithDeprecatedSettings extends Config {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import path from 'path'
|
import path from 'path'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import os from 'os'
|
import os from 'os'
|
||||||
|
import { isCI } from 'ci-info'
|
||||||
import { getCatalogsFromWorkspaceManifest } from '@pnpm/catalogs.config'
|
import { getCatalogsFromWorkspaceManifest } from '@pnpm/catalogs.config'
|
||||||
import { LAYOUT_VERSION } from '@pnpm/constants'
|
import { LAYOUT_VERSION } from '@pnpm/constants'
|
||||||
import { PnpmError } from '@pnpm/error'
|
import { PnpmError } from '@pnpm/error'
|
||||||
@@ -122,6 +123,7 @@ export async function getConfig (opts: {
|
|||||||
'auto-install-peers': true,
|
'auto-install-peers': true,
|
||||||
bail: true,
|
bail: true,
|
||||||
'catalog-mode': 'manual',
|
'catalog-mode': 'manual',
|
||||||
|
ci: isCI,
|
||||||
color: 'auto',
|
color: 'auto',
|
||||||
'dangerously-allow-all-builds': false,
|
'dangerously-allow-all-builds': false,
|
||||||
'deploy-all-files': false,
|
'deploy-all-files': false,
|
||||||
@@ -531,6 +533,11 @@ export async function getConfig (opts: {
|
|||||||
}
|
}
|
||||||
pnpmConfig.neverBuiltDependencies = []
|
pnpmConfig.neverBuiltDependencies = []
|
||||||
}
|
}
|
||||||
|
if (pnpmConfig.ci) {
|
||||||
|
// Using a global virtual store in CI makes little sense,
|
||||||
|
// as there is never a warm cache in that environment.
|
||||||
|
pnpmConfig.enableGlobalVirtualStore = false
|
||||||
|
}
|
||||||
|
|
||||||
transformPathKeys(pnpmConfig, os.homedir())
|
transformPathKeys(pnpmConfig, os.homedir())
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import npmTypes from '@pnpm/npm-conf/lib/types'
|
|||||||
export const types = Object.assign({
|
export const types = Object.assign({
|
||||||
'auto-install-peers': Boolean,
|
'auto-install-peers': Boolean,
|
||||||
bail: Boolean,
|
bail: Boolean,
|
||||||
|
ci: Boolean,
|
||||||
'cache-dir': String,
|
'cache-dir': String,
|
||||||
'catalog-mode': ['strict', 'prefer', 'manual'],
|
'catalog-mode': ['strict', 'prefer', 'manual'],
|
||||||
'child-concurrency': Number,
|
'child-concurrency': Number,
|
||||||
|
|||||||
@@ -104,7 +104,6 @@
|
|||||||
"@pnpm/symlink-dependency": "workspace:*",
|
"@pnpm/symlink-dependency": "workspace:*",
|
||||||
"@pnpm/types": "workspace:*",
|
"@pnpm/types": "workspace:*",
|
||||||
"@zkochan/rimraf": "catalog:",
|
"@zkochan/rimraf": "catalog:",
|
||||||
"ci-info": "catalog:",
|
|
||||||
"enquirer": "catalog:",
|
"enquirer": "catalog:",
|
||||||
"is-inner-link": "catalog:",
|
"is-inner-link": "catalog:",
|
||||||
"is-subdir": "catalog:",
|
"is-subdir": "catalog:",
|
||||||
|
|||||||
@@ -163,6 +163,7 @@ export interface StrictInstallOptions {
|
|||||||
prepareExecutionEnv?: PrepareExecutionEnv
|
prepareExecutionEnv?: PrepareExecutionEnv
|
||||||
returnListOfDepsRequiringBuild?: boolean
|
returnListOfDepsRequiringBuild?: boolean
|
||||||
injectWorkspacePackages?: boolean
|
injectWorkspacePackages?: boolean
|
||||||
|
ci?: boolean
|
||||||
}
|
}
|
||||||
|
|
||||||
export type InstallOptions =
|
export type InstallOptions =
|
||||||
|
|||||||
@@ -88,7 +88,6 @@ import {
|
|||||||
import { linkPackages } from './link'
|
import { linkPackages } from './link'
|
||||||
import { reportPeerDependencyIssues } from './reportPeerDependencyIssues'
|
import { reportPeerDependencyIssues } from './reportPeerDependencyIssues'
|
||||||
import { validateModules } from './validateModules'
|
import { validateModules } from './validateModules'
|
||||||
import { isCI } from 'ci-info'
|
|
||||||
import semver from 'semver'
|
import semver from 'semver'
|
||||||
import { CatalogVersionMismatchError } from './checkCompatibility/CatalogVersionMismatchError'
|
import { CatalogVersionMismatchError } from './checkCompatibility/CatalogVersionMismatchError'
|
||||||
|
|
||||||
@@ -292,7 +291,7 @@ export async function mutateModules (
|
|||||||
storeDir: opts.storeDir,
|
storeDir: opts.storeDir,
|
||||||
virtualStoreDir: ctx.virtualStoreDir,
|
virtualStoreDir: ctx.virtualStoreDir,
|
||||||
virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,
|
virtualStoreDirMaxLength: opts.virtualStoreDirMaxLength,
|
||||||
confirmModulesPurge: opts.confirmModulesPurge && !isCI,
|
confirmModulesPurge: opts.confirmModulesPurge && !opts.ci,
|
||||||
|
|
||||||
forceHoistPattern: opts.forceHoistPattern,
|
forceHoistPattern: opts.forceHoistPattern,
|
||||||
hoistPattern: opts.hoistPattern,
|
hoistPattern: opts.hoistPattern,
|
||||||
|
|||||||
@@ -38,7 +38,6 @@
|
|||||||
"@pnpm/read-projects-context": "workspace:*",
|
"@pnpm/read-projects-context": "workspace:*",
|
||||||
"@pnpm/resolver-base": "workspace:*",
|
"@pnpm/resolver-base": "workspace:*",
|
||||||
"@pnpm/types": "workspace:*",
|
"@pnpm/types": "workspace:*",
|
||||||
"ci-info": "catalog:",
|
|
||||||
"path-absolute": "catalog:",
|
"path-absolute": "catalog:",
|
||||||
"ramda": "catalog:"
|
"ramda": "catalog:"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -82,6 +82,7 @@ interface HookOptions {
|
|||||||
|
|
||||||
export interface GetContextOptions {
|
export interface GetContextOptions {
|
||||||
autoInstallPeers: boolean
|
autoInstallPeers: boolean
|
||||||
|
ci?: boolean
|
||||||
excludeLinksFromLockfile: boolean
|
excludeLinksFromLockfile: boolean
|
||||||
peersSuffixMaxLength: number
|
peersSuffixMaxLength: number
|
||||||
allProjects: Array<ProjectOptions & HookOptions>
|
allProjects: Array<ProjectOptions & HookOptions>
|
||||||
@@ -174,6 +175,7 @@ export async function getContext (
|
|||||||
workspacePackages: opts.workspacePackages ?? arrayOfWorkspacePackagesToMap(opts.allProjects),
|
workspacePackages: opts.workspacePackages ?? arrayOfWorkspacePackagesToMap(opts.allProjects),
|
||||||
...await readLockfiles({
|
...await readLockfiles({
|
||||||
autoInstallPeers: opts.autoInstallPeers,
|
autoInstallPeers: opts.autoInstallPeers,
|
||||||
|
ci: opts.ci,
|
||||||
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
||||||
peersSuffixMaxLength: opts.peersSuffixMaxLength,
|
peersSuffixMaxLength: opts.peersSuffixMaxLength,
|
||||||
force: opts.force,
|
force: opts.force,
|
||||||
@@ -232,6 +234,7 @@ export async function getContextForSingleImporter (
|
|||||||
manifest: ProjectManifest,
|
manifest: ProjectManifest,
|
||||||
opts: {
|
opts: {
|
||||||
autoInstallPeers: boolean
|
autoInstallPeers: boolean
|
||||||
|
ci?: boolean
|
||||||
enableGlobalVirtualStore?: boolean
|
enableGlobalVirtualStore?: boolean
|
||||||
excludeLinksFromLockfile: boolean
|
excludeLinksFromLockfile: boolean
|
||||||
peersSuffixMaxLength: number
|
peersSuffixMaxLength: number
|
||||||
@@ -331,6 +334,7 @@ export async function getContextForSingleImporter (
|
|||||||
virtualStoreDir,
|
virtualStoreDir,
|
||||||
...await readLockfiles({
|
...await readLockfiles({
|
||||||
autoInstallPeers: opts.autoInstallPeers,
|
autoInstallPeers: opts.autoInstallPeers,
|
||||||
|
ci: opts.ci,
|
||||||
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
excludeLinksFromLockfile: opts.excludeLinksFromLockfile,
|
||||||
peersSuffixMaxLength: opts.peersSuffixMaxLength,
|
peersSuffixMaxLength: opts.peersSuffixMaxLength,
|
||||||
force: opts.force,
|
force: opts.force,
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import {
|
|||||||
} from '@pnpm/lockfile.fs'
|
} from '@pnpm/lockfile.fs'
|
||||||
import { logger } from '@pnpm/logger'
|
import { logger } from '@pnpm/logger'
|
||||||
import { type ProjectId, type ProjectRootDir } from '@pnpm/types'
|
import { type ProjectId, type ProjectRootDir } from '@pnpm/types'
|
||||||
import { isCI } from 'ci-info'
|
|
||||||
import clone from 'ramda/src/clone'
|
import clone from 'ramda/src/clone'
|
||||||
import equals from 'ramda/src/equals'
|
import equals from 'ramda/src/equals'
|
||||||
|
|
||||||
@@ -30,6 +29,7 @@ export async function readLockfiles (
|
|||||||
autoInstallPeers: boolean
|
autoInstallPeers: boolean
|
||||||
excludeLinksFromLockfile: boolean
|
excludeLinksFromLockfile: boolean
|
||||||
peersSuffixMaxLength: number
|
peersSuffixMaxLength: number
|
||||||
|
ci?: boolean
|
||||||
force: boolean
|
force: boolean
|
||||||
frozenLockfile: boolean
|
frozenLockfile: boolean
|
||||||
projects: Array<{
|
projects: Array<{
|
||||||
@@ -57,7 +57,7 @@ export async function readLockfiles (
|
|||||||
// ignore `pnpm-lock.yaml` on CI servers
|
// ignore `pnpm-lock.yaml` on CI servers
|
||||||
// a latest pnpm should not break all the builds
|
// a latest pnpm should not break all the builds
|
||||||
const lockfileOpts = {
|
const lockfileOpts = {
|
||||||
ignoreIncompatible: opts.force || isCI,
|
ignoreIncompatible: opts.force || opts.ci === true,
|
||||||
wantedVersions: [LOCKFILE_VERSION],
|
wantedVersions: [LOCKFILE_VERSION],
|
||||||
useGitBranchLockfile: opts.useGitBranchLockfile,
|
useGitBranchLockfile: opts.useGitBranchLockfile,
|
||||||
mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
|
mergeGitBranchLockfiles: opts.mergeGitBranchLockfiles,
|
||||||
|
|||||||
@@ -77,7 +77,6 @@
|
|||||||
"@zkochan/rimraf": "catalog:",
|
"@zkochan/rimraf": "catalog:",
|
||||||
"@zkochan/table": "catalog:",
|
"@zkochan/table": "catalog:",
|
||||||
"chalk": "catalog:",
|
"chalk": "catalog:",
|
||||||
"ci-info": "catalog:",
|
|
||||||
"enquirer": "catalog:",
|
"enquirer": "catalog:",
|
||||||
"get-npm-tarball-url": "catalog:",
|
"get-npm-tarball-url": "catalog:",
|
||||||
"is-subdir": "catalog:",
|
"is-subdir": "catalog:",
|
||||||
@@ -111,6 +110,7 @@
|
|||||||
"@types/which": "catalog:",
|
"@types/which": "catalog:",
|
||||||
"@types/yarnpkg__lockfile": "catalog:",
|
"@types/yarnpkg__lockfile": "catalog:",
|
||||||
"@types/zkochan__table": "catalog:",
|
"@types/zkochan__table": "catalog:",
|
||||||
|
"ci-info": "catalog:",
|
||||||
"delay": "catalog:",
|
"delay": "catalog:",
|
||||||
"jest-diff": "catalog:",
|
"jest-diff": "catalog:",
|
||||||
"path-name": "catalog:",
|
"path-name": "catalog:",
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { type Config, types as allTypes } from '@pnpm/config'
|
|||||||
import { WANTED_LOCKFILE } from '@pnpm/constants'
|
import { WANTED_LOCKFILE } from '@pnpm/constants'
|
||||||
import { prepareExecutionEnv } from '@pnpm/plugin-commands-env'
|
import { prepareExecutionEnv } from '@pnpm/plugin-commands-env'
|
||||||
import { type CreateStoreControllerOptions } from '@pnpm/store-connection-manager'
|
import { type CreateStoreControllerOptions } from '@pnpm/store-connection-manager'
|
||||||
import { isCI } from 'ci-info'
|
|
||||||
import pick from 'ramda/src/pick'
|
import pick from 'ramda/src/pick'
|
||||||
import renderHelp from 'render-help'
|
import renderHelp from 'render-help'
|
||||||
import { installDeps, type InstallDepsOptions } from './installDeps'
|
import { installDeps, type InstallDepsOptions } from './installDeps'
|
||||||
@@ -334,7 +333,7 @@ export type InstallCommandOptions = Pick<Config,
|
|||||||
workspace?: boolean
|
workspace?: boolean
|
||||||
includeOnlyPackageFiles?: boolean
|
includeOnlyPackageFiles?: boolean
|
||||||
confirmModulesPurge?: boolean
|
confirmModulesPurge?: boolean
|
||||||
} & Partial<Pick<Config, 'modulesCacheMaxAge' | 'pnpmHomeDir' | 'preferWorkspacePackages' | 'useLockfile' | 'symlink'>>
|
} & Partial<Pick<Config, 'ci' | 'modulesCacheMaxAge' | 'pnpmHomeDir' | 'preferWorkspacePackages' | 'useLockfile' | 'symlink'>>
|
||||||
|
|
||||||
export async function handler (opts: InstallCommandOptions): Promise<void> {
|
export async function handler (opts: InstallCommandOptions): Promise<void> {
|
||||||
const include = {
|
const include = {
|
||||||
@@ -348,7 +347,7 @@ export async function handler (opts: InstallCommandOptions): Promise<void> {
|
|||||||
const installDepsOptions: InstallDepsOptions = {
|
const installDepsOptions: InstallDepsOptions = {
|
||||||
...opts,
|
...opts,
|
||||||
frozenLockfileIfExists: opts.frozenLockfileIfExists ?? (
|
frozenLockfileIfExists: opts.frozenLockfileIfExists ?? (
|
||||||
isCI && !opts.lockfileOnly &&
|
opts.ci && !opts.lockfileOnly &&
|
||||||
typeof opts.rawLocalConfig['frozen-lockfile'] === 'undefined' &&
|
typeof opts.rawLocalConfig['frozen-lockfile'] === 'undefined' &&
|
||||||
typeof opts.rawLocalConfig['prefer-frozen-lockfile'] === 'undefined'
|
typeof opts.rawLocalConfig['prefer-frozen-lockfile'] === 'undefined'
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export const DEFAULT_OPTS = {
|
|||||||
ca: undefined,
|
ca: undefined,
|
||||||
cacheDir: '../cache',
|
cacheDir: '../cache',
|
||||||
cert: undefined,
|
cert: undefined,
|
||||||
|
ci: false,
|
||||||
excludeLinksFromLockfile: false,
|
excludeLinksFromLockfile: false,
|
||||||
extraEnv: {},
|
extraEnv: {},
|
||||||
cliOptions: {},
|
cliOptions: {},
|
||||||
|
|||||||
18
pnpm-lock.yaml
generated
18
pnpm-lock.yaml
generated
@@ -1514,6 +1514,9 @@ importers:
|
|||||||
can-write-to-dir:
|
can-write-to-dir:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.1.1
|
version: 1.1.1
|
||||||
|
ci-info:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 3.9.0
|
||||||
is-subdir:
|
is-subdir:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
@@ -4637,9 +4640,6 @@ importers:
|
|||||||
'@zkochan/rimraf':
|
'@zkochan/rimraf':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 3.0.2
|
version: 3.0.2
|
||||||
ci-info:
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 3.9.0
|
|
||||||
enquirer:
|
enquirer:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.4.1
|
version: 2.4.1
|
||||||
@@ -4737,6 +4737,9 @@ importers:
|
|||||||
'@yarnpkg/core':
|
'@yarnpkg/core':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 4.0.5(typanion@3.14.0)
|
version: 4.0.5(typanion@3.14.0)
|
||||||
|
ci-info:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 3.9.0
|
||||||
deep-require-cwd:
|
deep-require-cwd:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.0.0
|
version: 1.0.0
|
||||||
@@ -4828,9 +4831,6 @@ importers:
|
|||||||
'@pnpm/types':
|
'@pnpm/types':
|
||||||
specifier: workspace:*
|
specifier: workspace:*
|
||||||
version: link:../../packages/types
|
version: link:../../packages/types
|
||||||
ci-info:
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 3.9.0
|
|
||||||
path-absolute:
|
path-absolute:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 1.0.1
|
version: 1.0.1
|
||||||
@@ -5508,9 +5508,6 @@ importers:
|
|||||||
chalk:
|
chalk:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 4.1.2
|
version: 4.1.2
|
||||||
ci-info:
|
|
||||||
specifier: 'catalog:'
|
|
||||||
version: 3.9.0
|
|
||||||
enquirer:
|
enquirer:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 2.4.1
|
version: 2.4.1
|
||||||
@@ -5596,6 +5593,9 @@ importers:
|
|||||||
'@types/zkochan__table':
|
'@types/zkochan__table':
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: '@types/table@6.0.0'
|
version: '@types/table@6.0.0'
|
||||||
|
ci-info:
|
||||||
|
specifier: 'catalog:'
|
||||||
|
version: 3.9.0
|
||||||
delay:
|
delay:
|
||||||
specifier: 'catalog:'
|
specifier: 'catalog:'
|
||||||
version: 5.0.0
|
version: 5.0.0
|
||||||
|
|||||||
@@ -19,7 +19,6 @@ import { type ParsedCliArgs } from '@pnpm/parse-cli-args'
|
|||||||
import { prepareExecutionEnv } from '@pnpm/plugin-commands-env'
|
import { prepareExecutionEnv } from '@pnpm/plugin-commands-env'
|
||||||
import { finishWorkers } from '@pnpm/worker'
|
import { finishWorkers } from '@pnpm/worker'
|
||||||
import chalk from 'chalk'
|
import chalk from 'chalk'
|
||||||
import { isCI } from 'ci-info'
|
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import isEmpty from 'ramda/src/isEmpty'
|
import isEmpty from 'ramda/src/isEmpty'
|
||||||
import { stripVTControlCharacters as stripAnsi } from 'util'
|
import { stripVTControlCharacters as stripAnsi } from 'util'
|
||||||
@@ -159,7 +158,7 @@ export async function main (inputArgv: string[]): Promise<void> {
|
|||||||
const reporterType: ReporterType = (() => {
|
const reporterType: ReporterType = (() => {
|
||||||
if (config.loglevel === 'silent') return 'silent'
|
if (config.loglevel === 'silent') return 'silent'
|
||||||
if (config.reporter) return config.reporter as ReporterType
|
if (config.reporter) return config.reporter as ReporterType
|
||||||
if (isCI || !process.stdout.isTTY) return 'append-only'
|
if (config.ci || !process.stdout.isTTY) return 'append-only'
|
||||||
return 'default'
|
return 'default'
|
||||||
})()
|
})()
|
||||||
|
|
||||||
@@ -249,7 +248,7 @@ export async function main (inputArgv: string[]): Promise<void> {
|
|||||||
|
|
||||||
if (
|
if (
|
||||||
config.updateNotifier !== false &&
|
config.updateNotifier !== false &&
|
||||||
!isCI &&
|
!config.ci &&
|
||||||
cmd !== 'self-update' &&
|
cmd !== 'self-update' &&
|
||||||
!config.offline &&
|
!config.offline &&
|
||||||
!config.preferOffline &&
|
!config.preferOffline &&
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ test('using a global virtual store', async () => {
|
|||||||
const storeDir = path.resolve('store')
|
const storeDir = path.resolve('store')
|
||||||
const globalVirtualStoreDir = path.join(storeDir, 'v10/links')
|
const globalVirtualStoreDir = path.join(storeDir, 'v10/links')
|
||||||
writeYamlFile(path.resolve('pnpm-workspace.yaml'), {
|
writeYamlFile(path.resolve('pnpm-workspace.yaml'), {
|
||||||
|
ci: false, // We force CI=false because enableGlobalVirtualStore is always disabled in CI
|
||||||
enableGlobalVirtualStore: true,
|
enableGlobalVirtualStore: true,
|
||||||
storeDir,
|
storeDir,
|
||||||
privateHoistPattern: '*',
|
privateHoistPattern: '*',
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ export const DEFAULT_OPTS = {
|
|||||||
bin: 'node_modules/.bin',
|
bin: 'node_modules/.bin',
|
||||||
ca: undefined,
|
ca: undefined,
|
||||||
cert: undefined,
|
cert: undefined,
|
||||||
|
ci: false,
|
||||||
excludeLinksFromLockfile: false,
|
excludeLinksFromLockfile: false,
|
||||||
extraEnv: {},
|
extraEnv: {},
|
||||||
cliOptions: {},
|
cliOptions: {},
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ export const DEFAULT_OPTS = {
|
|||||||
ca: undefined,
|
ca: undefined,
|
||||||
cacheDir: '../cache',
|
cacheDir: '../cache',
|
||||||
cert: undefined,
|
cert: undefined,
|
||||||
|
ci: false,
|
||||||
excludeLinksFromLockfile: false,
|
excludeLinksFromLockfile: false,
|
||||||
extraEnv: {},
|
extraEnv: {},
|
||||||
cliOptions: {},
|
cliOptions: {},
|
||||||
|
|||||||
Reference in New Issue
Block a user