How to Publish Your First NPM Package in Minutes!
Tags: npm, webdev, programming, tutorial
Published: 2021-06-06 07:21:10

> In this article, I’m going to show you how to publish your first NPM package in minutes. 

Now the package we’re going to create today is pretty useless, but the process we use is going to be applicable for almost every NPM package that you’re going to want to publish. 

In our example today we are going to create two functions, one that takes the nth root of a number, and one that tells us whether a number is even.

{% youtube ScXVxxnPmOE %}

---

###Make an NPM Account and Login
To get started, create an NPM account if you haven’t already done so at npmjs.com and make sure to verify your email address. If you don’t verify it, you will not be able to publish any packages.

[https://www.npmjs.com/](https://www.npmjs.com/
)

Now in our command line, we can log in to our npm account:

`npm login`

You will then be prompted to enter your username, password, and email address.


###Create A Package.json

Now the next thing we’re going to do is create our `package.json` with

`npm init`

With the following settings:
* _Package Name_: Make this something unique(Check the NPM website to see if your name is taken)
* _Version_: 1.0.0
* _Description_: This will appear on the NPM page so make it helpful for users
* _Entry Point_: index.js
* _Test Command_: You can leave this blank
* _GitHub Repository_: If you have a GitHub repo for your module, then add it here. This will appear on the NPM page
* _Keywords_: This will make it easier for developers to find your package
* _Author_: List yourself
* _License_: ISC (This is the boilerplate license for open-source software)

###Create index.js with nth root function
Now let’s make our first function. Create that `index.js` file which we designated as the main file for our package at the root of your project.

For our code, we are going to define module.exports, and whatever we set this value to is what our package will return. For now, let's define a function called nthRt that takes in a number, and then returns the nth root of that number.

```
module.exports = function nthRt(n) {
     return n ** (1/n)
}
```

###NPM Publish and Test It
We can now publish this by running

`npm publish`

Now if we go back to npm, and click on our packages, we’ll see the package we just published!

###Install and Require is-odd
Now let’s get a little fancier. How can we add a dependency? Another similarly useless npm package is the is-odd package, which, you guessed it, tells us if an integer is odd.

[https://www.npmjs.com/package/is-odd](https://www.npmjs.com/package/is-odd
)

Let’s go back to our IDE, and install it with

`npm i is-odd`

Once that is done, we should see the dependency in our `package.json` file.

Then on the top of our `index.js`, let's require the module with:

`const isOdd = require(‘is-odd’)`

###Add isEven Function
Now let’s use this isOdd function to create our own function to tell whether a number is even.

Instead of setting module.exports to our nthRt function, let's set it to an object, with keys and values for our individual functions.

Let’s then create our isEven function and just return the negation of our isOdd function.

```
const isOdd = require(‘is-odd’)
module.exports = {
       nthRt: function nthRt(n) {
              return n ** (1/n)
       },
       isEven: function isEven(n) {
              return !isOdd(n)
       }
}
```

###Add README.md
Now you might have noticed the documentation that was included on the is-odd npm page. To create our own, we just need to make a README markdown file called `README.md`

We can then insert markdown syntax to explain the installation and usage of our package.

###Change Version, Publish, and Test
Now before we can publish this new version, we have to make sure to increment the version value in our `package.json()`.

Then run 

`npm publish`

and in a matter of seconds, we should see the new update!

###Unpublish the Package
Now, on a final note, you should feel free to test the publishing process until you are comfortable with it, but make sure to unpublish NPM packages that are purely for your testing. We all have to do our part to make the NPM system clean and efficient, so the fewer useless packages there are the better.

To unpublish your package simply run: 

`npm unpublish <the name of your package> -f`

Now if we try to go to our npm page, we’ll get a 404, meaning it was successfully unpublished!

---
Thanks for reading! 

If you have any questions or just want to show off the cool NPM packages that you’re making, comment down below!

Also, don’t forget to follow us on social media to get all the updates on how Codesphere is revolutionizing the development experience. 

Happy coding!