fix: side effects cache should work in a workspace

This commit is contained in:
Zoltan Kochan
2022-01-14 16:30:58 +02:00
parent 6b877aad5b
commit fff0e4493b
6 changed files with 48 additions and 2 deletions

View File

@@ -0,0 +1,5 @@
---
"@pnpm/config": minor
---
Set `side-effects-cache-read` and `side-effects-cache-write`.

View File

@@ -0,0 +1,5 @@
---
"pnpm": patch
---
Side effects cache should work in a workspace.

1
.npmrc
View File

@@ -7,5 +7,6 @@ shared-workspace-lockfile = true
use-beta-cli = true
publish-branch = main
pnpmfile = .pnpmfile.cjs
side-effects-cache = true
strict-peer-dependencies = true
extend-node-path = false

View File

@@ -65,8 +65,10 @@ export interface Config {
version: string
}
preferOffline?: boolean
sideEffectsCache?: boolean
sideEffectsCacheReadonly?: boolean
sideEffectsCache?: boolean // for backward compatibility
sideEffectsCacheReadonly?: boolean // for backward compatibility
sideEffectsCacheRead?: boolean
sideEffectsCacheWrite?: boolean
shamefullyHoist?: boolean
dev?: boolean
ignoreCurrentPrefs?: boolean

View File

@@ -467,6 +467,8 @@ export default async (
if (!pnpmConfig.userConfig) {
pnpmConfig.userConfig = npmConfig.sources.user?.data
}
pnpmConfig.sideEffectsCacheRead = pnpmConfig.sideEffectsCache ?? pnpmConfig.sideEffectsCacheReadonly
pnpmConfig.sideEffectsCacheWrite = pnpmConfig.sideEffectsCache
if (opts.checkUnknownSetting) {
const settingKeys = Object.keys({

View File

@@ -15,6 +15,7 @@ process.env['npm_config_hoist'] = 'true'
delete process.env.npm_config_registry
delete process.env.npm_config_virtual_store_dir
delete process.env.npm_config_shared_workspace_lockfile
delete process.env.npm_config_side_effects_cache
test('getConfig()', async () => {
const { config } = await getConfig({
@@ -758,3 +759,33 @@ test('getConfig() returns the userconfig even when overridden locally', async ()
expect(config.registry).toEqual('https://project-local.example.test')
expect(config.userConfig).toEqual({ registry: 'https://registry.example.test' })
})
test('getConfig() sets sideEffectsCacheRead and sideEffectsCacheWrite when side-effects-cache is set', async () => {
const { config } = await getConfig({
cliOptions: {
'side-effects-cache': true,
},
packageManager: {
name: 'pnpm',
version: '1.0.0',
},
})
expect(config).toBeDefined()
expect(config.sideEffectsCacheRead).toBeTruthy()
expect(config.sideEffectsCacheWrite).toBeTruthy()
})
test('getConfig() sets sideEffectsCacheRead and sideEffectsCacheWrite when side-effects-cache-readonly is set', async () => {
const { config } = await getConfig({
cliOptions: {
'side-effects-cache-readonly': true,
},
packageManager: {
name: 'pnpm',
version: '1.0.0',
},
})
expect(config).toBeDefined()
expect(config.sideEffectsCacheRead).toBeTruthy()
expect(config.sideEffectsCacheWrite).toBeFalsy()
})