Package Exports
- load-from-cwd-or-npm
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 (load-from-cwd-or-npm) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
load-from-cwd-or-npm
Load a module from either CWD or npm
CLI directory
const loadFromCwdOrNpm = require('load-from-cwd-or-npm');
// $ npm ls validate-npm-package-name
// > └── (empty)
(async () => {
require('validate-npm-package-name'); // throws a `MODULE_NOT_FOUND` error
const RegistryClient = await loadFromCwdOrNpm('validate-npm-package-name'); // doesn't throw
})();
Installation
npm install load-from-cwd-or-npm
API
const loadFromCwdOrNpm = require('load-from-cwd-or-npm');
loadFromCwdOrNpm(moduleId)
moduleId: string
(a module ID without path separators (/
, \\
))
Return: Promise<any>
It loads a module with the given module ID from either of these two directories:
node_modules
in the current working directorynode_modules
in the directory wherenpm
CLI is installed
If the module ins't installed in CWD but included in the npm CLI dependencies, it loads the module from npm CLI directory.
// $ npm ls nopt
// > └── (empty)
(async () => {
const nopt = await loadFromCwdOrNpm('nopt'); //=> {[Function: nopt], clean: [Function: clean] ...}
})();
If the module ins't included in the npm CLI dependencies but installed in CWD, it loads the module from CWD.
// $ npm ls eslint
// > └── eslint@4.11.0
(async () => {
// npm doesn't depend on `eslint` module.
const eslint = await loadFromCwdOrNpm('eslint'); //=> {linter: EventEmitter { ... }, ...}
})();
If the module exists in both directories, it compares their package versions and loads the newer one.
// $ npm ls rimraf
// > └── rimraf@1.0.0
(async () => {
// Loaded from npm CLI directory because the CWD version is older
const rimraf = await loadFromCwdOrNpm('rimraf');
})();
The returned promise will be fulfilled with the loaded module, or rejected when it fails to find the module from either directories.
License
ISC License © 2017 - 2018 Shinnosuke Watanabe