Suppose that you're working on ~/dev/my-cool-project and inside ~/dev/my-cool-project/package.json you might have something like this:
"dependencies": { "that-cool-lib": "1.2.3", ... But that that-cool-lib is one of your own projects. You're also working on that project and it's over at ~/dev/that-cool-lib. Within that-cool-lib you might be in a git branch or perhaps you're preparing a 2.0.0 release.
Now you're interested if
[email protected] is going to work here inside
my-cool-project.
What you could do
First, you release this fancy
[email protected] to
npmjs.com with
that project's
npm publish procedure. Then as soon as that's done and you can see that the release made it onto
https://www.npmjs.com/package/that-cool-lib/v/2.0.0.
Then you go over to
my-cool-project and start a new
git branch to try the upgrade,
npm install [email protected] --save so you have this:
"dependencies": { - "that-cool-lib": "1.2.3", + "that-cool-lib": "2.0.0", ... Now you can try it that new version of my-cool-project and if that-cool-lib had any of its own entry point executables or post/pre install steps, they'd be fully resolved.
What you should do
Instead, use install-local. Don't use npm link because it might not install entry point executables and I also don't like the fact that I need to go into that-cool-lib and install it (globally?) first (when you do cd that-cool-lib && npm link). Also, see "What's wrong with npm-link?".
Here's how you do it:
npx install-local ~/dev/that-cool-lib
and it acts pretty much exactly as if you had gotten it from npmjs.com the normal way.
Notes
I almost never use npm these days. Go yarn! So, perhaps I've misinterpreted something.
Also, I try my very hardest to never use npm install -g ... (or yarn global ... for that matter) now that we have npx. Perhaps if you'd install it locally it'd speed up the use of local-install by 1-3 seconds each time you run this. Again, my skillset of modern npm is fading so I don't think I understand why it takes me 14 seconds the first time I run npx install that-cool-lib and then it takes 14 seconds again when I run the exact same command again. Does it not benefit from any caching? How much of that time is spent on npmjs.com resolving other sub-dependencies that that-cool-lib requires?
Hopefully, this helps other people stuck in a similar boat.