Starting a new Node Project
Most of the time, starting a Node project involves a lot of typing, copying and pasting and typing data into your repository. This post lists some ways to automate the process in the command line and via scripts.
How to start any new Node.js project:— Tierney Cyren (@bitandbang) January 7, 2019
$ npx license mit > LICENSE
$ npx gitignore node
$ npx covgen YOUR_EMAIL_ADDRESS
$ npm init -y
You're ready to start coding.
npx license mit uses the license package to download a license of your choice for the project, in this case, MIT
npx gitignore node uses the gitignore package to download the appropriate
.gitignore file from GitHub
npm init -y accepts all of the default options for npm init and creates a
npx first became available with NPM 5 and it's also available as a standalone package. It provides a way to run Node packages either from your local installation or from your global node repository, installing whatever packages it needs to run the command. This is awesome because it means you only need to install the packages you need like
covgen once in the global scope rather than install them in each individual project.
Customizing the init file #
Going back to
npm init -y. Unless you've done it already it'll produce a completely blank
package.json file that you have to go edit later. Better than not having it or have to create the file by hand but it's still a pain.
Until I read an article by Phil Nash I didn't realize that you could customize the parameters
npm init uses as defaults. They look like this:
npm set init.author.name "Your name"
npm set init.author.email "firstname.lastname@example.org"
npm set init.author.url "https://your-url.com"
npm set init.license "MIT"
npm set init.version "1.0.0"
Once the parameters are configured, they will be used whenever you run the
npm init command, whether it's automated or not.
We can take this a step further by creating a shell script to automate the steps down to one command. I created a
repo-init.sh file and add the code below in it; then put the file somewhere in your shell's path.
npx license $(npm get init.license) -o "$(npm get init.author.name)" > LICENSE
npx gitignore node
npx covgen "$(npm get init.author.email)"
npm init -y
npx eslint --init
git add -A
git commit -m "Initial commit"
This assumes a few things:
- You want to put things in a Git repository
- You've filled out the defaults for init parameters
- You want to use Code Covenant code of conduct
- You want to use ESLint
So with this script, you have a one-liner to get your repository set up and ready to go. Some next steps may include additional tool configuration or populating
package.json with other tools you normally use.