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 that-cool-lib@2.0.0
is going to work here inside my-cool-project
.
What you could do
First, you release this fancy that-cool-lib@2.0.0
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 that-cool-project@2.0.0 --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.
Comments