I'm in the process of cleaning up some npm packages that haven't been touched in a while, and part of that is pruning all the cruft that has been accumulated in
package.json over the years.
I was looking for a canonical order to sort the keys by, and thought the order the npm docs specify the configuration options made sense.
Of course, after manually sorting one
package.json file—which probably took 2 minutes—I decided to spend 30 minutes to find our how I could automate sorting the other two.
Luckily there's an npm package for everything. With the
sort-package-json package you can go sort your
package.jsons in a logical order.
npx sort-package-json **/*/package.json
That's all I had to do to keep my monorepo clean and tidy.
Every now and then I do a quick checkup of a project's npm dependencies. I like to keep them up to date by often doing small upgrades. It's a lot less painful than doing large upgrades once a year.
One annoying part of this process is ensuring every dependency is on the latest major version. For example, if a project requires
yarn upgrade won't upgrade it to
lint-staged@^9.0.0 (luckily of course, it's the behaviour I want during everyday development).
Today I learned about
yarn upgrade --latest, which will upgrade all dependencies to the highest available version, despite the version constraints in your
lint-staged@^8.0.0 would happily upgrade to
lint-staged@^9.0.0, even if it breaks semver boundaries.