NPM
Great, you have some cool code that you use for your project, and you wish everybody could see how cool you are, and how clean your code is. Lucky guy, your code can totally be extracted to a small module in javascript, perfect occasion to publish your first npm module. Your code is ready, time to package, publish and enjoy.
###Creating your user
Assuming you have npm installed of course, run npm adduser
.
You will have to enter a username, name and email address. You can also sign up directly on the website.
###Creating your package
After having extracted the code that you want to have in your module, go into your repository and run npm init
.
It will output some fields to complete to generate a default package.json
.
I wont be too long on the content of your package.json
but just know that it is what identify your module, what are its dependencies, its entry point and what it contains. It can contain a lot of other informations that you can discover here
Let’s go quickly through the most important information that your package.json should contain:
-
main is the entry point of your module. Basically the
module.exports
part of the file specified as your main value will be the methods available for your module. In other words,require('your-module')
will just return the exports part of your main property of yourpackage.json
- files is an array of the files you want to include in your package. It can be any file: templates, css files, plain text.
- version is your module version. Don’t forget to bump it each time you publish, otherwise you are going to get an error.
###Testing your package locally
Before publishing you should make sure that your package works correctly.
To do so, just run npm pack
.
It will create an archive.
Then, create a new project somewhere on your machine:
mkdir my-new-project && cd
npm init //enter enter enter...enter
npm install --save ../path_to_your_module_folder/module_archive.tgz
You can then check the content of your node_modules
and verify that all the files needed are there.
You can run node and require your module, and verify that everything is ok.
###Publishing
cd my-module-folder
npm publish
Verify on the website, and you can even npm install your-module
in the test project that you had.
###Bumping version number using npm
npm version patch
###Deploying to npm from TravisCI
Create a .travis.yml
in your folder and make sure it contains the following:
language: node_js
node_js:
- 0.10
deploy:
provider: npm
api_key:
secure: 'YOUR_KEY'
on:
tags: true
This will deploy your module to the npm registry if the build is successful. You need to specify your Travis API key, but make sure it is encrypted.
To do so: Install the Travis CLI if you don’t have it (assuming you have at least ruby version 1.9.3)
gem install travis -v 1.7.4 --no-rdoc --no-ri
cat ~/.npmrc (copy the _auth property in your clipboard)
travis encrypt --add deploy.api_key
(paste the _auth property)
(CTRL+D)
Copy paste the key into your .travis.yml.
Simpler: go into your module folder where you have create your .travis.yml
Run travis setup npm
Assuming you use Github to version source control your module, and you have the webhook set up, it should work.
If you need more information, you can check my npm module: dynamic-json-resume
###Resources