Resolve the path of a package regardless of it having an entry point
Some packages like CLI tools and grunt tasks don't have a entry point, like "main": "foo.js"
in package.json, resulting in them not being resolvable by require.resolve()
. Unlike require.resolve()
, this module also resolves packages without an entry point, returns undefined
instead of throwing when the module can't be found, and resolves from process.cwd()
instead __dirname
by default.
$ npm install resolve-pkg
const resolvePkg = require('resolve-pkg');
// $ npm install --save-dev grunt-svgmin
resolvePkg('grunt-svgmin/tasks', {cwd: __dirname});
//=> '/Users/sindresorhus/unicorn/node_modules/grunt-svgmin/tasks'
// Fails here as Grunt tasks usually don't have a defined main entry point
require.resolve('grunt-svgmin/tasks');
//=> Error: Cannot find module 'grunt-svgmin'
Type: string
What you would use in require()
.
Type: string
Default: process.cwd()
Directory to resolve from.
- resolve-cwd - Resolve the path of a module from the current working directory
- resolve-from - Resolve the path of a module from a given path
- resolve-global - Resolve the path of a globally installed module
- import-from - Import a module from a given path
- import-cwd - Import a module from the current working directory
- import-lazy - Import a module lazily
MIT © Sindre Sorhus