Tradotto e adattato da: https://codeburst.io/how-to-create-and-publish-your-first-node-js-module-444e7585b738
Requisiti
- Registra un account su GitHub
- Installa Node.js (npm è automaticamente installato insieme a Node, ma quasi sempre una versione vecchia)
- Aggiorna npm alla versione più aggiornata
npm install npm@latest -g
- Crea e conferma un account su npm
Crea un repo su GitHub
Crea un nuovo repo su GitHub con il nome “hello-world”, assicurandoti di inizializzarlo con un file README, di aggiungere un .gitignore per Node, e di una licenza MIT;

Dopodichè, clona il repo localmente tramite git o con il tuo software abituale.
Perchè una licenza?
Sei libero o meno di aggiungere una licenza al tuo progetto, ma se non ne aggiungi una, significherà che sarà applicata la legislazione standard sul copyright.
Ovvero, che tu detieni tutti i diritti del tuo codice sorgente, e che nessun altro potrà riprodurlo, distribuirlo, o creare derivati partendo dal tuo lavoro.
Decidi, quindi, in base a ciò che vorrai fare.
Configura npm
Sul tuo progetto locale, definisci i seguenti parametri:
npm set init.author.name “Mario Rossi”
npm set init.author.email “mario.rossi@email.me”
npm set init.author.url “http://www.mariorossi.me"
Le credenziali inserite verranno salvate in un file~/.npmrc e saranno usate di default ogni qualvolta starai per creare un nuovo npm package, senza doverle inserire nuovamente.
Per autenticarti sulla tua macchina, loggati su npm con il tuo account, digitando:
npm login
Inizializza un nuovo npm package
Per inizializzare un nuovo modulo, avrai bisogno di creare un file package.json
Per farlo, digita
npm init
Ti verranno richiesti i dati necessari per creare il file package.json, pvvero ‘nome’ e ‘versione’.
La versione iniziale del tuo modulo sarà:
0.1.0
Non c’è un obbligo, ma sarebbe bene che la struttura del codice di versione rispetti sempre la semantica corretta, definita “semantic versioning” (SemVer).
Quando farai qualche modifica alla libreria, pensa sempre a questo schema:

Se vuoi aggiungere informazioni aggiuntive riguardo l’autore, puoi usare la seguente sintassi (email e website sono entrambi opzionali):
Your Name <email@example.com> (http://example.com)
A questo punto, troverai un file package.json nella cartella del tuo progetto.
Specifica una versione minima di Node
Aggiungendo il seguente campo (opzionale) al tuo package.json, puoi specificare la versione minima di Node necessaria affinchè il tuo package funzioni correttamente per tutti gli utenti che la utilizzeranno.
"engines": { "node": ">=4.2.4" },
Crea un node module
Un modulo Node/npm è a tutti gli effetti un file JavaScript, but ma deve seguire la specifica CommonJS.
exports.printMsg = function() { console.log("Hello World"); }
Scrivi un README
Aggiorna il file README.md , usando il linguaggio Markdown descrivendo il tuo modulo e inserendo esempi validi per gli utenti che lo utilizzeranno.
Qui troverai un piccolo template.
Hello
=========
Una libreria di prova
## Installazione
`npm install hello-world`
Commit & push sul repo GitHub
Prima di eseguire il push, crea anche un tag per la versione 0.1.0
git add .
git commit -m “Initial release”
git tag v0.1.0
git push origin master --tags
Pubblica su npm
npm publish
Se in questa fase ti verrà restituito un qualche tipo di errore, vuol dire che il package name che hai scelto è già utilizzato.
Cambia il nome al tuo package e riprova.
Entra sul tuo npm account, dove troverai il tuo modulo.
Congratulazioni! Hai appena pubblicato il tuo primo Node module!
Aggiornamenti del package
Da questo punto in poi, l’unico modo che hai per aggiornare il tuo node module, è rilasciarne una nuova versione.
npm, infatti, non permette di pubblicare nuovamente lo stesso identificativo di versione, qualsiasi tipo di modifica tu stia eseguendo.
Dovrai quindi aggiornare il tuo package.json modificando il numero della versione, oppure:
npm version <update_type> -m "<message>"
dove update_type corrisponde ad una delle tipologie del semantic versioning: patch, minor, or major.
Quindi, dovremo lanciare l’istruzione:
npm version patch -m "Version %s - some bug fixes"
%s è un’identificativo che verrà sostituito automaticamente dal numero di versione aggiornato.
Questo comando farà tutto per noi: aggiornerà la versione sul package.json, creerà un nuovo commit e un corrispondente tag con la release appena creata.
Dopodichè aggiorna il tuo o repo e pubblica nuovamente su npm:
git push origin master --tags
npm publish