Using node package manager you can get an even quicker start of your project by using the npm init command. So let’s get started by opening a command prompt (on windows open the Node.js command prompt). Then create a new folder and navigate into this newly created folder. In the folder execute following command and answer the questions or press enter for the defaults.
Your environment has been set up for using Node.js 0.10.17 (x64) and npm.
After answering the questions the result should be something like above. As you can see I have changed the default name. By default node package manager uses the folder name. Play around yourself to get the desired result. You can also change the package.json after it is created.
Why do we need this package.json file?
The answer is simple… When we put our code in source control (GIT, SVN, TFS) we don’t want to commit all our third party packages. We want to leave them out of the source control. Another reason is we also don’t want to ship all dependencies as part of our own package when we release our package to the npm registry. All team members or users of your package who checkout your code or download your package are simply missing all the dependency packages and this is where the packages.json comes in. After downloading the package, they simply execute npm install._ This_ will download all dependencies etc. based on your package.json file._
So let’s continue with some more npm tips and tricks. The second thing you may already have seen by executing npm init is the npm install –save command. Npm install –save will install your package and saves it in the package.json file. Skipping the –save option will simply not add the package to your package.json file. Let’s start by adding the express package, which we also used in previous post.
C:\Users\Marco\NodeJsPackageExample> npm install --save express
As you can see the package express is installed including all dependencies. In our package.json we can see the dependency added.
Now you know how to install a package and save it to the package.json. To uninstall a package and remove it from your package file just execute the npm uninstall –save command.
When you just like me skipped the repository during npm init, you just have seen two warnings. Let’s solve both by adding a repository in the package.json file and a Readme.md file in the root of our package.
Do not forget to add some contents in your Readme.md file, otherwise npm won’t be satisfied. A title and a short description should be ok.
When deploying a package on a server you don’t want your development packages published on the server. An example of such a development package is grunt. So we want to save such package in a different way so our colleague developers can install the development packages, but our production server can skip them.
`C:\Users\Marco\NodeJsPackageExample> npm install --save-dev grunt
As you can see all dependencies of grunt are automatically installed and a new property is added to your packages.json file.
With grunt installed you can speed up your development even more by automating a lot of tasks. These are tasks like running tests, minifying, compiling Less/Sass etc. I would like to challenge you and share your grunt scripts with me and the rest of the developer community by posting a reaction on this post. For more help on _grunt
_ visit http://gruntjs.com/.
If your package is not intended to be shared or reused on the _npm registry _make sure to protect yourself by adding the following setting in your package.json.
This will prevent you from accidentally publish your package to the npm registry.
While working on your awesome package you probably want to update your dependencies before you publish your package so you are running the latest code of all packages.
To check if there are any package updates available you can run the following command.
C:\Users\Marco\NodeJsPackageExample> npm outdated
As you can see there is a new release of the express package. Since it is a patch release (increment of 3th number) I decide to update this package.
C:\Users\Marco\NodeJsPackageExample> npm update --save express
Node package manager uses semantic versioning and it is up to the package creator/publisher to follow these guidelines. So always double check what has changed and see if your package still works after upgrading the dependencies. Usually you should be safe when installing patch releases. Be more carefull when you upgrade minor or major releases. More information about versioning can be found here. Make sure your package satisfies these guidelines when publishing new and updated packages since this will help other developers during the update process.
Creating a package is one thing, but the second thing is you probably want to share it with the community. Sharing a package with the community is pretty straight forward.
First of all we need to set our npm author info if you haven’t already done so. This can be done by executing following commands.
C:\Users\Marco\NodeJsPackageExample> npm set init.author.name "Marco Franssen"
Now your user account is created and you’re able to publish packages to the npm registry.
The last thing waiting for us is to publish the actual package. Which can be done using following command.
C:\Users\Marco\NodeJsPackageExample> npm publish ./
Since I have put the private flag on true in my package.json.
I got following error:
npm ERR! Error: This package has been marked as private
So when I remove this from my package.json and execute publish command again it should succeed and your package will be listed in the npm registry.
C:\Users\Marco\NodeJsPackageExample> npm publish ./
Since the package I just published won’t be of any value I removed it using following command.
C:\Users\Marco\NodeJsPackageExample> npm unpublish ./ --force
I hope this article showed you some of the nice stuff you can do to quickly build your first node package and get it published in the npm registry. Using npm you should get better control over your dependencies and it should become easier for you and your team to keep track on those dependencies.
Also have a look at https://npmjs.org/doc/developers.html to learn even more about the Node Package Manager.
Thanks for reading.