From 2264bfdf45d198910d819198a4a80de702e977cb Mon Sep 17 00:00:00 2001 From: Zoltan Kochan Date: Thu, 8 Jul 2021 01:43:58 +0300 Subject: [PATCH] fix: use proper default value for store-dir, cache-dir on macOS ref #2574 --- .changeset/plenty-moose-tie.md | 5 +++++ packages/config/src/dirs.ts | 5 ++++- packages/config/test/dirs.test.ts | 8 ++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 .changeset/plenty-moose-tie.md diff --git a/.changeset/plenty-moose-tie.md b/.changeset/plenty-moose-tie.md new file mode 100644 index 00000000000..1ba6d04f4c6 --- /dev/null +++ b/.changeset/plenty-moose-tie.md @@ -0,0 +1,5 @@ +--- +"@pnpm/config": patch +--- + +Choose proper default state-dir and cache-dir on macOS. diff --git a/packages/config/src/dirs.ts b/packages/config/src/dirs.ts index 7261843838b..a438a0a22eb 100644 --- a/packages/config/src/dirs.ts +++ b/packages/config/src/dirs.ts @@ -10,6 +10,9 @@ export function getCacheDir ( if (opts.env.XDG_CACHE_HOME) { return path.join(opts.env.XDG_CACHE_HOME, 'pnpm') } + if (opts.platform === 'darwin') { + return path.join(os.homedir(), 'Library/Caches/pnpm') + } if (opts.platform !== 'win32') { return path.join(os.homedir(), '.cache/pnpm') } @@ -28,7 +31,7 @@ export function getStateDir ( if (opts.env.XDG_STATE_HOME) { return path.join(opts.env.XDG_STATE_HOME, 'pnpm') } - if (opts.platform !== 'win32') { + if (opts.platform !== 'win32' && opts.platform !== 'darwin') { return path.join(os.homedir(), '.local/state/pnpm') } if (opts.env.LOCALAPPDATA) { diff --git a/packages/config/test/dirs.test.ts b/packages/config/test/dirs.test.ts index d9883a57d1a..1e22fffef6c 100644 --- a/packages/config/test/dirs.test.ts +++ b/packages/config/test/dirs.test.ts @@ -13,6 +13,10 @@ test('getCacheDir()', () => { env: {}, platform: 'linux', })).toBe(path.join(os.homedir(), '.cache/pnpm')) + expect(getCacheDir({ + env: {}, + platform: 'darwin', + })).toBe(path.join(os.homedir(), 'Library/Caches/pnpm')) expect(getCacheDir({ env: { LOCALAPPDATA: '/localappdata', @@ -36,6 +40,10 @@ test('getStateDir()', () => { env: {}, platform: 'linux', })).toBe(path.join(os.homedir(), '.local/state/pnpm')) + expect(getStateDir({ + env: {}, + platform: 'darwin', + })).toBe(path.join(os.homedir(), '.pnpm-state')) expect(getStateDir({ env: { LOCALAPPDATA: '/localappdata',