JSPM

@rigor789/resolve-package-path

1.0.7
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 2639
  • Score
    100M100P100Q184061F
  • License MIT

Package Exports

  • @rigor789/resolve-package-path
  • @rigor789/resolve-package-path/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@rigor789/resolve-package-path) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

@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