1.0.7 • Published 8 months ago

@rigor789/resolve-package-path v1.0.7

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@rigor789/resolve-package-path

CI

Small utility (no external dependencies) for finding the path of a package across different node versions.


npm i --save @rigor789/resolve-package-path
# or 
yarn add @rigor789/resolve-package-path
# or
pnpm add @rigor789/resolve-package-path

The reason this exists is because require.resolve("<packageName>/package.json") can fail if a package defines exports in their package.json and does not include package.json.

Some details on the issue can be found here: https://github.com/nodejs/node/issues/33460

This package works around the issue by: 1. first trying a regular require.resolve("<packageName>/package.json") 2. then falling back to require.resolve("<packageName>") and finding the last index of node_modules/<packageName> 3. finally falls back to the same require.resolve("<packageName>") and a filesystem traversal upwards until a matching package.json is found 4. if the package is not found, returns false

API

resolvePackagePath(packageName: string, options?)

Resolves the package path. Options accepts anything that require.resovle("", options) accepts. See Node Docs

Example:

const { resolvePackagePath } = require("@rigor789/resolve-package-path");

console.log(resolvePackagePath('package-a'))         // /path/to/package-a
console.log(resolvePackagePath('@scoped/package-a')) // /path/to/@scoped/package-a

resolvePackageJSONPath(packageName: string, options?)

Same as resolvePackagePath but returns the path to the package.json instead.

Example:

const { resolvePackageJSONPath } = require("@rigor789/resolve-package-path");

console.log(resolvePackageJSONPath('package-a'))         // /path/to/package-a/package.json
console.log(resolvePackageJSONPath('@scoped/package-a')) // /path/to/@scoped/package-a/package.json

License

MIT

1.0.7

8 months ago

1.0.6

8 months ago

1.0.5

3 years ago

1.0.4

3 years ago

1.0.3

3 years ago

1.0.2

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago