When should you
Most developers run
npm init right after creating and navigating into a new project.
It makes sense to
npm init at the start of the project because we use npm to download dependencies. Once we
npm init, we can begin downloading (and saving) our dependencies.
For most projects, this workflow works.
But if you're creating an open source project, the best time to
npm init is slightly later. If you
npm init right after creating and navigating into the project, you'll miss out a few things.
The best time to npm init
The best time to
npm init (for an open source project) is after you added a Git remote to your project. In other words, you should only
npm init after you have completed the following commands:
git remote add origin
npm init after you have added a Git remote, npm will generate three extra things in your
package.json files. They are:
repositoryproperty with a link to your remote repo
bugsproperty with a link to the issues page.
homepageproperty that links to the
These three properties will be displayed as metadata on the right side of the project's npm page.
These metadata are links. They let people move to your project's Github page easily from the npm page. You'll want these links for better discoverability.
The second best time to npm init
The second best time to npm init is now. If you run
npm init now, it will generate the three properties I mentioned above.
Before you run
npm init, make sure you rename your original
package.json file to something else. This way, you can copy-paste dependencies and other changes you've made from the original
package.json file to the newly generated one.
The best time to
npm init is after you've added a Git remote to your project. The second best time? Anytime!
Thanks for reading. This article was originally posted on my blog. Sign up for my newsletter if you want more articles to help you become a better frontend developer.
Top comments (4)
Thanks Zell for the article.
I've always thought those package.json properties were to be added manually (, which is how I have been doing 😅) but
npm initauto generating them is easier & less error prone.
I was wondering about workaround of renaming
package.jsonmentioned in "The second best time to npm init".
Initially I thought
npm initwould add new props, which it did.
But then I added bad props that are to be added by
npm initmanually, and they weren't overwritten (tried
npm initwith & without
--forceflag) but only added a missing property,
So your flow below makes total sense 🙂
npm initto create a new one with correct metadata.
This is interesting. Thanks for testing and posting your tests :)
Short, clear, concise and useful ... Everything that has a good post 👏👏👏