https://github.com/zoubin/custom-resolve
Sugar way to customize substack's resolve
https://github.com/zoubin/custom-resolve
Last synced: 27 days ago
JSON representation
Sugar way to customize substack's resolve
- Host: GitHub
- URL: https://github.com/zoubin/custom-resolve
- Owner: zoubin
- Created: 2015-06-19T08:03:44.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-12-01T06:45:42.000Z (over 10 years ago)
- Last Synced: 2025-11-19T17:17:33.303Z (7 months ago)
- Language: JavaScript
- Size: 26.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# custom-resolve
[](https://www.npmjs.org/package/custom-resolve)
[](https://travis-ci.org/zoubin/custom-resolve)
[](https://coveralls.io/github/zoubin/custom-resolve)
[](https://david-dm.org/zoubin/custom-resolve)
[](https://david-dm.org/zoubin/custom-resolve#info=devDependencies)
Return a function works like substack's [`node-resolve`], with some options set by default.
## Example
```
⌘ tree example/
example/
├── node_modules
│ └── colors
│ ├── colors.scss
│ └── package.json
├── resolve.js
└── style_modules
└── red
└── index.scss
```
example/node_modules/colors/package.json:
```json
{
"style": "colors"
}
```
example/resolve.js:
```javascript
var resolver = require('..')
var path = require('path')
var resolve = resolver({
main: 'style',
extensions: ['.scss'],
})
resolve('colors', function (err, file) {
console.log(path.relative(__dirname, file))
})
console.log(
path.relative(__dirname, resolve.sync('./red', {
basedir: path.join(__dirname, 'style_modules'),
}))
)
```
output:
```
⌘ node example/resolve.js
style_modules/red/index.scss
node_modules/colors/colors.scss
```
## Breaking changes in v1.0.0
* The options specified will be treated as the default options for [`node-resolve`], and when the returned custom resolve function called, options passed to it will **overwrite** the corresponding default options.
* The `packageEntry` option is replaced by `main`.
* The `symlinks` option is replaced by `symlink`. Check [`symlink`](#symlink) for more details.
* The API only receives one argument.
## resolve = resolver(defaultOptions)
Return a function like [`node-resolve`],
with some of the options set by default according to `defaultOptions`.
When `resolve` is called with extra options,
they **overwrite** those in `defaultOptions`.
Besides all options supported by [`node-resolve`],
`defaultOptions` supports the following options.
Refer to [`node-resolve`] for more information about supported options.
### main
Specify the package entry.
If `defaultOptions` is `String`, it is treated as the `main` option.
Type: `String`
Default: `main`
### filename
Specify the file path where to start resolving.
It is meant to make setting the `basedir` option conveniently.
Type: `String`
### symlink
Specify how to treat symlinks in the top `node_modules` directory.
Type: `true`
All symlinks will be resolved to their realpaths.
Type: `Array`, `String`
Only those specified will be resolved to realpaths.
Type: `Function`
Signature: `needRealpath = symlink(file)`
Realpaths are used only when this function returns a truthy value.
[`node-resolve`]: https://github.com/substack/node-resolve