Creating and publishing your own NPM (Node Package Manager) package can be a great way to share useful code, collaborate with the open-source community, and contribute to the JavaScript ecosystem. Here’s a step-by-step guide to help you build, publish, and manage your own NPM package. I will be using the example of a simple package that I have created and published on the npm — otp generator.
Prerequisites
- Node.js: Ensure that Node.js is installed on your system. You can download it from the Node.js official site.
- NPM account: Sign up on NPM if you haven’t already.
Step 1. Initialize a New Project
First, you need to create a new directory for your package and initialize it as an NPM project.
1. Create a project directory
mkdir otp-generator
cd otp-generator
2. Initialize NPM: Run the following command and answer the prompts (you can also skip this and directly modify the package.json later).
npm init
This will generate a package.json file that contains metadata about your package, such as the package name, version, description, and entry point (usually index.js).
Step 2. Write your Package Code
Create the main file for your package. Typically, the entry point is index.js, though it can be any file name you specify in the main field of package.json.
For example, create an index.js file.
touch index.js
Then, write the functionality for your package inside index.js. Here’s a simple example.
function getOTP(length) {
try {
const digits = "0123456789";
let OTP = "";
const len = digits.length;
for (let i = 0; i < length; i++) {
OTP += digits[Math.floor(Math.random() * len)];
}
return OTP;
} catch (err) {
throw err;
}
}
module.exports = getOTP;
In this case, you’ve created a basic package that exports a function getOTP, which takes a number/length as input and returns a random digit number, which then can be used as otp.
Step 3. Test Your Package Locally
Before publishing your package, it’s a good idea to test it locally.
Run the following command in the project root directory to link your package globally.
npm link
Now, create another directory where you will use your package for testing.
mkdir test
cd test
Inside the test directory, link the package you created.
npm link otp-generator
Note. The name of the package will be the one mentioned in package.json
Create a test file (test.js), and require your package to ensure everything works as expected.
const getOTP = require('otp-generator');
console.log(getOTP(6));
Run the test.
node test.js
If everything is working, you should see a random number like 825765
Step 4. Prepare for Publishing
Now that your package works locally, it’s time to prepare it for publishing.
Update package.json: Open the package.json file and ensure that all relevant fields are correctly filled out. The most important fields are.
- name: The name of your package (must be unique on NPM).
- version: Follow semantic versioning (e.g., 1.0.0).
- description: A brief explanation of what your package does.
- main: The entry point file (default is index.js).
Here’s an example package.json.
{
"name": "otp-generator",
"version": "1.0.0",
"description": "Generates random OTP for the given length",
"main": "index.js",
"keywords": [
"otp",
"one time password"
],
"author": "Samarth Srivastava",
"license": "ISC"
}
Add a README file: Write a README.md file to document your package. This should include installation instructions, usage examples, and any other relevant information.
Example README.md
# OTP Generator
This package generates random OTPs, which can be used with any messaging service or as a random number generator for the given length.
## Usage/Examples
```javascript
const getOTP = require('otp-generator');
console.log(getOTP(6)); // Returns a 6-digit random number
## 🔗 Links
[![portfolio](https://img.shields.io/badge/my_portfolio-000?style=for-the-badge&logo=ko-fi&logoColor=white)](https://github.com/Samarth-Srivastava)
[![linkedin](https://img.shields.io/badge/linkedin-0A66C2?style=for-the-badge&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/samarthsrivastava/)
Step 5. Publish Your Package
Before you can publish your package, you need to log in to your NPM account using the command line.
Login to NPM
npm login
You’ll be prompted to enter the username, password, and email associated with your NPM account.
Publish the package: Once logged in, publish your package by running.
npm publish
If everything is set up correctly, your package will be live on the NPM registry.