Reliably installs a local package into another, for testing.
Reliably installs a local package into another, for testing.
It’s very similar to installing a published package; npm pack
is used to generate a tarball that only includes published files, which are extracted into node_modules
for a similar result to a regular npm install --no-save
.
npm link
is a notoriously unreliable way to locally test a package in another package, as it uses symlinks:
package.json
files
field or .npmignore
is correct, as npm link
doesn’t use npm pack
like npm publish
does.node_modules
of the package it’s being tested in, peer dependencies installed in the host package can’t be reached. For example, this makes it difficult to test a package that has a react
peer dependency inside a Next.js project.node_modules
and bin
directories, and you have to remember to use npm unlink
to tidy up, which inconveniently strips the dependency from your package.json
.Installation isn’t required to use the CLI command install-from
with npx
.
To install with npm, run:
npm install install-from --save-dev
Then, use either the CLI command install-from
or the JS API function installFrom
.
install-from
Reliably installs a local package into another at the CWD, for testing.
Argument | Description |
---|---|
1 | Absolute or CWD relative filesystem path to the package to install from. |
Installing a local package into another using npx
.
In a terminal, change to the directory of the package you want to test another package in:
cd ~/Repos/foo
Then, install the desired local package:
npx install-from ~/Repos/bar
Reliably installs a local package into another, for testing.
Parameter | Type | Description |
---|---|---|
pathPackageFrom |
string | Absolute or CWD relative filesystem path to the package to install from. |
pathPackageTo |
string? | Absolute or CWD relative filesystem path to the package to install to, defaulting to process.cwd() . |
Returns: Promise<void> — Resolves once installation is complete.
How to import
.
import installFrom from 'install-from';
Installing a local package into another.
installFrom( './packages/package-to-install-from', './packages/package-to-install-to' ) .then(() => { // … }) .catch(() => { // … });