browserify / browserify/resolve

Result differs from Node's require.resolve when using `basedir` option with symlinks

Open
#295 9 comments 0 reactions 0 assignees View on GitHub
Dominant language
JavaScript
Stars
796
Forks
188
PR merge metrics
No merged PRs in 30d

Description

Hi, Ive noticed an issue that arises when using this package alongside `npm link` or `yarn link` - when resolving from a linked dependency's directory as `basedir`, this package will resolve to a module in the linked packages `node_modules`. This is in contrast to Node's `require.resolve`, which will resolve to the root level `node_modules` (same as if the package wasn't linked).

For example, if `resolve-example` depends on a package `test-pkg`, `test-pkg` itself depends on `lodash`, and I link `resolve-example` to `test-pkg` using `yarn link`, here's what I see after running the following

```
const resolve = require('resolve/sync')
let opts = { basedir: '/Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg', preserveSymlinks: true }

console.log(require.resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/lodash/lodash.js

console.log(resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg/node_modules/lodash/lodash.js

opts = { basedir: '/Users/jacksonchristoffersen/resolve-example/node_modules/test-pkg', preserveSymlinks: false }

console.log(require.resolve('lodash', opts))
// /Users/jacksonchristoffersen/resolve-example/node_modules/lodash/lodash.js

console.log(resolve('lodash', opts))
// /Users/jacksonchristoffersen/test-pkg/node_modules/lodash/lodash.js
```

I'd expect these results to match for each value of `opts`

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.