Creating a Release for my Project
Tags: beginners, opensource, npm, programming
Published: 2023-11-24 17:55:25

I am proud to announce my release for my [TILerator](https://github.com/mismathh/TILerator) project with [npm](https://www.npmjs.com/).

<h2>Process for Creating a Release</h2>
The npm [documentation](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) provided substantial information on how to contribute to the registry. These are the steps I took in order to add my project to the npm registry and also the challenges I faced:

1. This was my first time creating a release and publishing it to npm, so I needed to first create an account on [npm](https://www.npmjs.com/).
2. Within the terminal I logged into the newly created npm account using `npm login`.
3. One common file between all npm packages is the `package.json` file. npm uses this file to describe your package and manage your dependencies, and if you are planning to publish to the npm registry you must have this package.json file. If you are a just starting out with your project, running `npm init` and following the instructing will help setup the package.json file for you.
4. The prerequisites have been completed and my project is now ready to be [tagged](https://git-scm.com/book/en/v2/Git-Basics-Tagging) with version number based on [semantic versioning](https://semver.org/). Prior to this, my project was at `v0.9.1` and since it was ready to be released, I used `npm version major` to update it to `v1.0.0`. 
5. I then pushed my tags to GitHub using `git push --follow-tags`
6. Finally, it was time to publish to the registry with `npm publish --access=public`. If you have been following along with these steps for your own project and everything has been going well up to this point, then congrats! You have successfully managed to publish your package to the npm registry. Unfortuntely, for me, I had to do a little more fixing to my package. After running the publish command, I was faced with an error. 
![Error whilst running npm publish](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5dvrdhw16t2mzn2iykky.JPG)
I was initially quite confused by this error, but a quick Google search showed me that one of the reasons for this error was if there is already a package with the same name as mine on npm. To my surprise, a search on the npm website showed a package called "tilerator" that was published 7 years ago! After reading the npm documentation, I found out that I could [scope](https://docs.npmjs.com/cli/v10/using-npm/scope) my package to make it unique. You can make your package a scoped package by adding a scope name in between an `@` and `/`, followed by the name of your project, such as: `@scopename/packagename`. I needed to change the name of my project inside the package.json file with my new scoped name, `@mismathh/tilerator` and ran `npm install` to also update the package.lock file. After repeating steps 4-5, running `npm publish --access=public` worked. My release can be found [here](https://www.npmjs.com/package/@mismathh/tilerator).

<h2>How to Install</h2>
1. `npm install @mismathh/tilerator -g`

<h2>User Testing</h2>
User testing went quite well in regards to the main functionality of the package, but it was brought to my attention that I needed to add more details to my README for the optional features. Using the `--config` flag was quite difficult to use for them since they didn't know what options to add inside the config file, and also it was noted that I didn't have to use `TILerator` in every command, and `tilerator` was fine.

<h2>Learning Outcomes</h2>
It was a great learning experience to publish my project to the npm registry. Over my programming journey I have used many npm packages for my projects but I never got to experience how those packages are placed into a public registry for developers to use, until now.