Um pacote é :
a) uma pasta contendo um programa descrito por um arquivo package.json
b) um tarball compactado contendo (a)
c) uma URL que resolva para (b)
d) um <nome>@<versão> que aponta para (c)
e) um <name>@<tag> que aponte para (d)
f) um <nome> que é o 'latest' tag satisfazendo (e)
g) uma URL git que quando clonada resultado resultada em (a)
Mesmo que você nunca publique seu pacote, você pode ter bastante beneficios usando o npm se você deseja escrever um programa node(a)
O arquivo package.json fica na raiz do seu projeto. É basicamente toda a interface.
name: Deve ser uma string que identifica seu projeto. Não precisa necessariamentecasarcom o sue nome de repositorio no github.version: A versão do seu pacote.engines: Espefica a versão donode(ou qualquer outro) que seu programa executa.author: Seu nome , email , créditos.scripts:main: Se você tem um modulo único que serve como ponto de entrada para seu programa. (ex:foo-> require('foo')) então você deve incluri ele aqui.directories: Este é um hash de sub pastas. Os melhores para serem incluidos sãolibedocmas se você especificar uma pasta cheia deman-pagesinmanelas serão instaladas como esses.
Você pode usar npm init na raiz do seu pacote para gerar um package.json base para começar o desenvolvimento.
Use um arquivo .npmignore para manter arquivos temporarios e inutéis fora do seu pacote. Se não existir um .npmignore mas sim um .gitignore, o npm vai ignorar as coisas que estiverem nos padrões do .gitignore.
Se você deseja incluir algo que está incluido em seu arquivo .gitignore , você pode criar um arquivo .npmignore vazio para sobrescrever ele.
Por padrão, os seguintes arquivos e pastas são ignorados , entõ não é necessário adicionar-los ao .npmignore :
.*.swp
._*
.DS_Store
.git
.hg
.lock-wscript
.svn
.wafpickle-*
CVS
npm-debug.log
Adicionalmente, tudo que estiver em npm_modules sera ignorado , exceto para as bundled dependencies. npm automaticamente gerencia isto para você, então não se preocupe em adicionar npm_modules ao seu arquivo .npmignore.
Os seguintes arquivos nunca são ignorados, então adicionar-los ao .npmignore não faz sentido :
package.json
README.*
npm link é destinado para instalar um pacote em desenvolvimento e ver as mudanças em tempo real sem a necessidade de ter que reinstalar-lo.
Você precisar re-linkar or npm rebuild -g para atualizar os pacotes compilados, obviamente.
Isso é importante
Se você não consegue instalar-lo localmente,você terá problemas para publicar-lo. Ou pior ainda, você irá publicar um pacote quebrado ou sem sentido.
Na pasta raiz do seu pacote execute : npm install . -g , isto irá te mostrar se está funcionando. Se você preferir , criar um link simbolico para seu pacote, para que aponte para seu diretorio de trabalho, execute isso : npm link.
Use npm ls -g para verificar se ele está lá. Para testar uma instalação local, vá para outra pasta e execute npm install /mypackage/folder/myPackage, em seguida vá execute o node-repl e tente usar : require('myPackage') para trazer o modulo principal do seu pacote.
Crie um conta usando : npm adduser e então prossiga nos prompts
Essa parte é fácil , para publicar sue pacote use :
npm publish
Você pode uma url para um tarball , ou um nome de arquivo de um tarball, ou o caminho para uma pasta.
Tenha em mente que tudo que estiver na pasta será exposto por padrão. Então se você tem arquivos secretos(como arquivos com senhas, e informações sigilosas) use o arquivo .npmignore para listar todos eles.
Twitte , compartilhe no github, no facebook, escreva no seu blog. Mostre para o mundo como é fácil instalar seu programa.