How to Create and Publish a Package to npm Registry

Search for a command to run...

No comments yet. Be the first to comment.
Unlock the Power of Python Comprehensions to Enhance Your Code's Clarity and Performance

Hello, friends! Today, I want to share why you should avoid sending mere "Hi!" or "Hey!" messages when trying to communicate with your colleagues or even friends. Having worked for three years, one immediate lesson I learned is that nobody has time t...

Python. You might be thinking I know what a list is, I have used it numerous times. But there is a difference between using a list and using a list efficiently. So, I will show you what I have learned as a Software Engineer. We can create a list basi...

As developers, we face many cases when we import data from one source and want to upload this data into another source. This was the same situation I was facing. I exported data from Notion and wanted to import it into the MongoDB Atlas. To insert da...

We have explored how to get current date, month, year and day of the week in the previous blog. In this blog post we will explore more of a datetime and its corresponding methods with some tutorial. Get the Current Week Number using Python There are ...

In this tutorial, we will see how to create, test and publish our own npm package. But why does anyone want to publish the npm package?
As developers, we use many npm packages that other developers have published. These npm packages improve our development cycle and save a lot of time. Npm packages provide some functionality so that we don't have to code them again. For example, on the frontend side, we use Axios to fetch data from APIs. Or we use UUID to give our data a unique id at the backend side.
By working in the IT field, we understand that efficiency is a crucial aspect of development. But, sometimes, we come across situations and have to write a piece of code. This code can be useful to many people in the world or to your organization. Now we can always use the git repositories for this task. But, setting up the codebase every time can be a bit tricky. Instead, after publishing the code, we can set up this codebase using a single command.
Note: Packages and Modules are two different things. But for this tutorial, we do not need to worry about the difference.
There are some prerequisites that you must fulfill before publishing the npm package.
We need to create an npm account and verify it.
(Remember, if you do not verify your account, you will face some errors when you try to publish the package.)
Download and install Node.js
Login into your local system using npm credentials.

After creating the npm account, open a terminal and write the following command. To verify the installation of node and npm, execute these commands.
node -v
npm -v
Now, to login into the npm account, use the following command. It will ask for your username, password and the email that you used to sign up.
npm login

Npm packages are of two types normal packages and scoped packages. Scoped packages are mostly used for private packages or an organization's internal usage. But you can find some public scoped packages as well, such as the @angular scoped package.
Note: Check the validity of the package name before starting writing the code. It is not a big concern we can change the name anytime but it is a good practice.
Npm packages are like normal node projects in most cases. So, as we initialized the node project we have this project as we using the following command.
npm init
For this tutorial, I will create an npm package that will log all my social media links. As shown below, I have filled necessary details. Here, I created a repository on GitHub and mentioned a link to that repository. It becomes easy to map
C:\social-info> npm init
package name: (social-info)
version: (1.0.0)
description: Log all social media information of Sahil Fruitwala.
entry point: (index.js)
test command:
git repository: https://github.com/SahilFruitwala/social-info.git
keywords: social media, Twitter, Linkedin, Instagram
license: (ISC)
About to write to C:\Users\Sahil\Desktop\social-info\package.json:
{
"name": "social-info",
"version": "1.0.0",
"description": "Log all social media information of Sahil Fruitwala.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
"type": "git",
"url": "git+https://github.com/SahilFruitwala/social-info.git"
},
"keywords": [
"social-media",
"Twitter",
"Linkedin",
"Instagram"
],
"author": "Sahil Fruitwala",
"license": "ISC",
"bugs": {
"url": "https://github.com/SahilFruitwala/social-info/issues"
},
"homepage": "https://github.com/SahilFruitwala/social-info#readme"
}
Is this OK? (yes) yes
After finishing this process, we have to create a starting file. In this case, there will be an index.js file as mentioned in the package.json. In this index.js file, we will write the core logic for the package. It is a very simple package which is why we have only one file.
Now, in the index.js file, we will write the main logic for our package. As I mentioned earlier, this package will log social media links. The logic is as follows:
const twitter = 'https://twitter.com/Sahil_Fruitwala'
const linkedin = 'https://www.linkedin.com/in/sahilfruitwala/'
const github = 'https://github.com/SahilFruitwala'
const logData = (option) => {
option === 1
? console.log(`Twitter: ${twitter}`)
: option === 2
? console.log(`LinkeIn: ${linkedin}`)
: option === 3
? console.log(`GitHub: ${github}`)
: console.log(`Enter Valid Input!`)
}
module.exports = logData
Here, when a user passes a specific digit, the logData function will log a specific social media URL.
Now, to test this package locally we can use the npm link command. This command will link the package folder to the global node_modules directory.
To use this package create a directory named to test and open a terminal in this directory. This directory is for testing purposes only. So, we can ignore some configurations. Run the npm init -y command in the test directory and create a JavaScript file named index.js.
Now, the main question is, how can we use the package that we created? To use this package, open the terminal in the test directory and write npm link social-info. Note that name of the package was social-info. The name must match then only this command will work. This command will generate the node_module directory in the test directory.
Write the code shown below in the index.js file of the test directory. We are importing the 'social-info' package. Here, as the logData function was the default import we can directly use it.
const info = require('social-info')
info(3)
info(13)
Output:
GitHub: https://github.com/SahilFruitwala
Enter Valid Input!
Finally, after testing package is ready to publish. To publish this package we just need one command.
npm publish
After successful publication, you will see output like the image below.

If you'd like to remove any package from the npm registry, use npm unpublish to unpublish the package.
Sometimes, there will be a need to update the package. When you make changes to your code and want to update the package, have to update the version of the package. To update the version use npm version <type>. Here <type> is a semantic versioning release types (patch, minor or major). After updating the version number, you can publish the package again. Use the same npm publish command to publish the package.
Awesome! Now you can create and publish your own packages. You can create scoped packages the same way we created this package. Try to create a scoped package using this documentation. You can also check out my first npm package as well. I created a Twitter Search API wrapper name Twi-JS.
Make sure to share any thoughts, questions or concerns. I would love to see them.