diff --git a/packages/vite/src/node/__tests__/plugins/terser.spec.ts b/packages/vite/src/node/__tests__/plugins/terser.spec.ts index 9fed1ec2c5ee7e..c6838e793a131d 100644 --- a/packages/vite/src/node/__tests__/plugins/terser.spec.ts +++ b/packages/vite/src/node/__tests__/plugins/terser.spec.ts @@ -27,7 +27,12 @@ describe('terser', () => { }, load(id) { if (id === '\0entry.js') { - return `const foo = 1;console.log(foo)` + return ` + const foo = 1; + console.log(foo); + const bar = { hello: 1, ["world"]: 2 }; + console.log(bar.hello + bar["world"]); + ` } }, }, @@ -52,4 +57,21 @@ describe('terser', () => { }) expect(resultCode).toContain('prefix_') }) + + test('nameCache', async () => { + const nameCache = {} + + await run({ + compress: false, + mangle: { + properties: { + keep_quoted: true, + }, + }, + nameCache, + }) + + expect(nameCache).toHaveProperty('props.props.$hello') + expect(nameCache).not.toHaveProperty('props.props.$world') + }) }) diff --git a/packages/vite/src/node/plugins/terser.ts b/packages/vite/src/node/plugins/terser.ts index ab17c3fb98dd47..8e7fcdc19c573f 100644 --- a/packages/vite/src/node/plugins/terser.ts +++ b/packages/vite/src/node/plugins/terser.ts @@ -66,7 +66,8 @@ export function terserPlugin(config: ResolvedConfig): Plugin { (typeof options.mangle.properties === 'object' && options.mangle.properties.nth_identifier?.get))) || typeof options.format?.comments === 'function' || - typeof options.output?.comments === 'function' + typeof options.output?.comments === 'function' || + options.nameCache ) }, max: maxWorkers,