Using the npm package manager for Node.js

Installing a Node.js package is very easy compared to other programming languages thanks to npm, the package manager that ships with it. To install a node module, one uses the install command, i.e. installing the popular undercore JavaScript module is as simply as typing

npm install undercore  

Installing a specific version of a package can be accomplished via appending @ and the version name, i.e.

npm install undercore@1.6.0  

installs the most current version 1.6.0 of the module as of 06/29/2014. To retrieve information on a package such as the available versions, its maintainers etc., one can simply type npm info undercore. To find a module via a number of keywords, one can use npm search <keyword1> <keyword2> ..., which will return a list of packages which match the supplied keywords along with their descriptions.

When creating a new node project, it is a good idea to create a package.json file in the head directory of the project. This file, which has to be written in JSON format, specifies information about the project such as its dependencies, the contributors, the source repository etc. Luckily, npm includes the init command which helps oneself in setting up this file. In the head directory of the project, typing npm init will invoke a helper guiding one through the process of creating this file by answering a series of questions.

When installing a new module, passing the option --save will ensure that the newly installed module is automatically added to the dependencies in the package.json file, e.g.

npm install jquery --save  

For packages which are only required for development and not in production use, there is also the --save-dev option:

npm install jquery --save-dev  

Packages installed with this option will be appended to the devDependencies in the package.json file and won't be installed when downloading the package via npm install <package-name>. However, they are installed when npm install is invoked locally in the development directory. This distinction is useful as it allows to have modules only used in development such as testing frameworks like mocha or build tools like grunt not getting installed when downloading the package for simple usage.

npm help lists many other commands that are included in npm. Typing npm help <command-name> opens a browser window with extensive documentation of how the command works.

Publishing a package on npm is almost as simple as installing one. First, we have to create an account via the command npm adduser, which prompts one for a user name, email address and password. Given a valid package.json file, we can then publish a module by invoking the command npm publish from its head directory.