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

 

 

Jayr Alencar

Doutorando em Ciências da Computação no Centro de Informática da Universidade Federal do Pernambuco (CIn - UFPE); Mestre pela mesma instituição; Formado em Análise e Desenvolvimento de Sistemas; Católico; Fã de O Senhor do Anéis.

Você pode gostar...

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *