Skip to content

Commit

Permalink
fix: CJS require('.') resolution (#108)
Browse files Browse the repository at this point in the history
  • Loading branch information
timfish authored Jul 1, 2024
1 parent 3b25c63 commit 29c77b5
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/get-exports.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,9 @@ async function getCjsExports (url, context, parentLoad, source) {
full.add(each)
}
} else {
if (re === '.') {
re = './'
}
// Resolve the re-exported module relative to the current module.
const newUrl = pathToFileURL(require.resolve(re, { paths: [dirname(fileURLToPath(url))] })).href
for (const each of await getExports(newUrl, context, parentLoad)) {
Expand Down
1 change: 1 addition & 0 deletions test/fixtures/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports.foo = 'something'
1 change: 1 addition & 0 deletions test/fixtures/require-root.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
module.exports = { ...require('.') }
12 changes: 12 additions & 0 deletions test/hook/require-root-cjs.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import Hook from '../../index.js'
import { foo } from '../fixtures/require-root.js'
import { strictEqual } from 'assert'

Hook((exports, name) => {
if (name.endsWith('require-root.js')) {
strictEqual(exports.foo, 'something')
exports.foo += '-wrap'
}
})

strictEqual(foo, 'something-wrap')

0 comments on commit 29c77b5

Please sign in to comment.