Criando modulo global em Node.js
Você já deve ter instalado algum pacote Node.js usando a diretiva -g, como npm install -g basel. Esses são pacotes, ou módulos globais, que você irá usar os comandos deles diretamente no prompt de comando ou bash.
Criando o seu
Versões de softwares
Node.js 4.3.1
NPM 2.14.12
Configurando
Para iniciar abra seu terminal (prompt, bash, etc.), e execute:
$ mkdir ola-mundo && cd ola-mundo
Para criar e acessar a pasta do nosso novo módulo.
Depois execute o auxiliar de criação de pacotes:
$ npm init
Seguindo os passos e preenchendo o que for pedido, será gerado o arquivo package.json, que terá mais ou menos essa estrutura:
{ "name": "ola-mundo", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "Clube dos Geeks <clubedosgeeks.com.br>", "license": "ISC" }
Nós iremos adicionar apenas alguns detalhes: uma dependência, e a mágica. E alterar o caminho do main. Ele ficará assim:
{ "name": "ola-mundo", "version": "1.0.0", "description": "", "main": "./lib/index.js", "bin": { "diga-oi": "bin/diga-oi.js" }, "preferGlobal": "true", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "dependencies":{ "commander":"*" }, "author": "Clube dos Geeks <clubedosgeeks.com.br>", "license": "ISC" }
Criando arquivos
Estrutura de pastas
Teremos as seguintes pastas e arquivos no nosso módulo:
bin/ diga-oi.js lib/ index.js node_modules/ commander/ package.json
lib/index.js
Será o arquivo que contém o módulo principal da nossa aplicação, podendo ser solicitado de forma global, ou apenas ser requisitado (require) por outro módulo ou programa node.js.
module.exports = function (name) { console.log("Olá " + name); }
Um modulo simples, mas você pode fazer programas complexos e usa-los da mesma forma.
bin/diga-oi.js
Este e o arquivo que será chamado quando executarmos nosso pacote de forma global.
#!/usr/bin/env node var ola = require('../lib/index'), program = require('commander'); program .description('Programa para receber e mostra nome') .option('-n, --nome <nome>', 'Nome') .parse(process.argv); ola(program.nome);
Preste atenção na linha 1 deste arquivo, onde encontramos #!/usr/bin/env node, é esta linha que faz com que o NPM crie um executável para seu módulo.
Usamos o pacote commander para facilitar o acesso argumentos, e com ele podemos dar nomes aos argumentos que serão atribuídos a propriedades do objeto, preservando seus nomes.
Testando
Para testar primeiro precisamos instalar nosso novo módulo. Para isso execute:
$ npm -g install
Seu pacote será instalado como global, agora é só testar:
$ diga-oi -n Jayr
O commander também conta com o comando –help ou -h para ajuda, que vai mostrar os opções disponíveis para o uso do seu pacote. Execute:
$ diga-oi –help