How to publish a package in the NPM public registry?

tudip-logo

Tudip

12 June 2019

What is NPM?

An NPM is a package manager for Node.js which comes bundled with Node.js installer. NPM consists of ‘npm-cli’ and an online repository for the publishing of open-source Node.js projects called packages or modules. Through ‘npm-cli’ we can publish and install packages to and from NPM public registry.

Prerequisite for publishing a package

To publish a package in the NPM public registry we need Node.js and NPM installed on the system.

Building a package

  1. First, create a project directory:
    ‘mkdir generate-random-num’
  2. Go to the project directory:
    ‘cd generate-random-num’
  3. Initialize the package:
    ‘npm init’

    The ‘npm init’ command will ask some questions which is related to the NPM package that will conclude with the creation of a ‘package.json’ file in the project directory.

npm-init

Package.json file is necessary in order to publish the package to the NPM registry.

The ‘main’ field in the package.json file is the file that would be loaded when the package is required by another application. By default, it is named as ‘index.js’.

Writing the project code

In the example below the project code is a simple code for the random number generator, create an index.js file in the root of the project folder and add your code:

function ranNumGenerator(min, max) {
if(typeof(max) !== 'number' && typeof(min) !== 'number') {
min = 0; max = 1;
}
return (Math.random() * (max-min)) + min;
}
module.export = ranNumGenerator;

Publishing the package

To publish a package authentication is required, visit the NPM(https://www.npmjs.com/) website to create an account. After creating an account, login through CLI:

‘npm login’

It will ask for the required details of your NPM account, provide the required details and hit enter.

npm-login

Run the command below through CLI to publish the package:

‘npm publish’

npm-publish

Note: The package name should be unique which does not match other packages name present in the NPM public registry.

Request a quote