diff --git a/packages/commonjs/src/transform-commonjs.js b/packages/commonjs/src/transform-commonjs.js index 4601094e9..ba348dedf 100644 --- a/packages/commonjs/src/transform-commonjs.js +++ b/packages/commonjs/src/transform-commonjs.js @@ -102,6 +102,7 @@ export default async function transformCommonjs( const topLevelAssignments = new Set(); const topLevelDefineCompiledEsmExpressions = []; const replacedGlobal = []; + const replacedThis = []; const replacedDynamicRequires = []; const importedVariables = new Set(); const indentExclusionRanges = []; @@ -369,7 +370,7 @@ export default async function transformCommonjs( if (lexicalDepth === 0 && !classBodyDepth) { uses.global = true; if (!ignoreGlobal) { - replacedGlobal.push(node); + replacedThis.push(node); } } return; @@ -444,6 +445,11 @@ export default async function transformCommonjs( storeName: true }); } + for (const node of replacedThis) { + magicString.overwrite(node.start, node.end, exportsName, { + storeName: true + }); + } for (const node of replacedDynamicRequires) { magicString.overwrite( node.start, diff --git a/packages/commonjs/test/fixtures/function/this/main.js b/packages/commonjs/test/fixtures/function/this/main.js index d0c275253..c0be15432 100644 --- a/packages/commonjs/test/fixtures/function/this/main.js +++ b/packages/commonjs/test/fixtures/function/this/main.js @@ -1,10 +1,11 @@ -const { augmentThis, classThis } = require('./foo'); +const { augmentThis, classThis, y } = require('./foo'); const obj = {}; augmentThis.call(obj); t.is(obj.x, 'x'); -t.is(this.y, 'y'); +t.is(this.y, undefined); +t.is(y, 'y'); const instance = new classThis(); diff --git a/packages/commonjs/test/snapshots/function.js.md b/packages/commonjs/test/snapshots/function.js.md index 2c31aab43..c6e8d6b30 100644 --- a/packages/commonjs/test/snapshots/function.js.md +++ b/packages/commonjs/test/snapshots/function.js.md @@ -7286,8 +7286,6 @@ Generated by [AVA](https://avajs.dev). { 'main.js': `'use strict';␊ ␊ - var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};␊ - ␊ var main = {};␊ ␊ var foo = {};␊ @@ -7296,7 +7294,7 @@ Generated by [AVA](https://avajs.dev). this.x = 'x';␊ };␊ ␊ - commonjsGlobal.y = 'y';␊ + foo.y = 'y';␊ ␊ foo.classThis = class classThis {␊ constructor(){␊ @@ -7310,13 +7308,14 @@ Generated by [AVA](https://avajs.dev). yy = this.y␊ };␊ ␊ - const { augmentThis, classThis } = foo;␊ + const { augmentThis, classThis, y } = foo;␊ ␊ const obj = {};␊ augmentThis.call(obj);␊ ␊ t.is(obj.x, 'x');␊ - t.is(commonjsGlobal.y, 'y');␊ + t.is(main.y, undefined);␊ + t.is(y, 'y');␊ ␊ const instance = new classThis();␊ ␊ diff --git a/packages/commonjs/test/snapshots/function.js.snap b/packages/commonjs/test/snapshots/function.js.snap index 97a1e03b0..726565e0d 100644 Binary files a/packages/commonjs/test/snapshots/function.js.snap and b/packages/commonjs/test/snapshots/function.js.snap differ