---
layout: post.html
title:  "Publishing My First NPM module"
date:   2013-10-29
tags: nodejs node npm javascript truncatise
summary: "For the past week or so (since setting up my new blog) I've been working on a new JavaScript module that truncates HTML."
---

For the past week or so (since setting up my new blog) I've been working on a new JavaScript module that truncates HTML.

Why have I been doing this you ask? Well, very quickly after putting together the theme for this  [Ghost](https://ghost.org/) blog I notice a small annoyance. The helper used to generate excerpts of post for the main page can only truncate based on character or word count. This seemed like a bit of a shortcoming to me, I wanted to be able to truncate on paragraphs so text isn't cut off mid-sentence.

And so [Truncatise](//github.com/AverageMarcus/Truncatise) was born!

As this is my first forte into NPMs I used it as a learning experience.

My first learning opportunity came from writing tests against my new module (which turned out to be **VERY** useful in highlighting some mistakes). For this I used [mocha](https://github.com/visionmedia/mocha) and [chai](https://github.com/chaijs/chai) to construct some BDD/TDD tests.

I also took this as a chance to get to know git a bit better, with use of [http://git-scm.com/book](http://git-scm.com/book), and used the command line tools to set up the repository etc.

The [documentation](https://npmjs.org/doc/developers.html) to publish to the NPM registry was very straightforward. Surprisingly so.

* NPM Registry: [https://npmjs.org/package/truncatise](https://npmjs.org/package/truncatise)
* GitHub Repository: [https://github.com/AverageMarcus/Truncatise](https://github.com/AverageMarcus/Truncatise)
* Bug Reporting: [https://github.com/AverageMarcus/Truncatise/issues](https://github.com/AverageMarcus/Truncatise/issues)

I very much welcome bug reports and any contributions. So please use, test, break and modify to your use.

I eventually plan to replace the truncation module used by [Ghost](https://ghost.org/) with mine to get some real-world testing. If all is stable and bug-free I plan to put in a pull request to the master repository.
