So… I want to create a local version of
moment for my calendar webapp.
moment doesn’t include Klingon representations of time. Or Borg, for that matter. What kind of a all-inclusive time package doesn’t embrace foreign cultures!?
The TL;DR: clone the package locally somewhere, npm install its deps,
npm link at its root, then go back to your flashy app that uses moment, at root type
npm link "moment"& you’re now using the local version. I couldn’t get yarn links to work. Not sure why.
I’m abandoning Yarn in this explanation because i couldn’t get the same functionality to work with it as NPM. So anyway, here goes:
I want two folders to focus on.
git clone... the package i want to edit/improve, *into* the local-modules folder.
Once i’m in that, i run
npm install to ensure i have all the right dependencies and config for that (babelrc, webpack, dev and regular dependencies).
In the local one, I go into
moment.js or whatever the entry file is. And right at the top I put a console.log in, just to show that we’re using the local/Klingon-friendly one:
cd (in terminal) into your new, local modules/moment package dir and at its root, type
npm link. To be clear: this is you linking a local, cloned, slightly changed version of an npm package.
So we’ve created an index link to this local package. The terminal confirmation for mine looks like this:
Now navigate back to your main project, and at root level, tell it you want to use the local version:-
cd /Users/aid/Projects/my-calendar-app && npm link "moment"
That spits out a confirmation that you are mapping to a local module:
Users/aid/Projects/my-calendar-app/node_modules/moment -> aid/.nvm/versions/node/v10.15.0/lib/node_modules/moment -> /Users/aid/Desktop/local-packages/moment
That’s basically saying “When i’m pointing at node_modules for moment, root to your npm links, for this version of node — and point to this local version/package of it”.
Now when we run our app:
It spits out the console.logs / changes we made locally.
To kill the link, go back to your local version and at root type
npm unlink --no-save moment. Then run
Yay for NPM links. Yay for Des Lynham.