Vamos iniciar com um novo projeto criando uma pasta e usando o comando npm init
mkdir muda-texto # cria a pasta do nosso modulo
cd muda-texto # entra na pasta
npm init -y # cria o arquivo package.json
Os comandos são registrados na configuração "bin" do arquivo package.json do modulo.
Vamos criar um comando simples que vai exibir o texto "Walter White" no terminal usando o comando say-my-name
1- Primeiro precisamos registrar o arquivo que vai conter o código do nosso comando no package.json na configuração bin
{
"name": "teste",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"bin": {
"say-my-name": "bin/say-my-name.js"
}
}
Crie a pasta bin e um novo arquivo com nome say-my-name.js na pasta atual do projeto.
O conteúdo do arquivo bin/say-my-name.js vai ser:
#! /usr/bin/env node
console.log('Walter White');
A primeira linha indica que esse arquivo será executável com o node.js
Para deixa o comando disponível em todos os terminais ele precisa estar instalado ou linkado no contexto global.
Já que estamos desenvolvendo nossa aplicação vamos linkar ela no contexto global com o comando npm link rodado na pasta do modulo (mesma pasta do package.json):
npm link
OBS_1: Pode ser nescessário o uso de sudo dependendo da sua configuração do node.js
OBS_2: Uma outra forma é instalar o modulo como um global usando o argumento -g no comando npm install -g
mas recomendo só usar esse recurso com modulos desenvolvidos.
Agora o comando say-my-name vai estar disponível no seu terminal. Exemplo:
- Você pode ver os dados relacionados ao comando em execução com o
console.log(process)
- Os argumentos do comando executado ficam disponíveis na variável process.argv (vamos usar um modulo para trata-los no curso)
- O
console.log
envia textos para o terminal e aceita formatações ex:\n
para pular linha ou\t
para identação (tab)
Link: Criando um comando para alterar textos
- LinK da documentação do npm init em inglês: https://docs.npmjs.com/cli/init
- Sobre CLI na Wikipedia: https://pt.wikipedia.org/wiki/Linha_de_comandos
- Tutorial de como criar comandos cli do Igor Santana na tableless: http://tableless.com.br/criando-aplicacoes-cli-utilizando-node-js/
https://github.com/albertosouza/mini-cursos/blob/master/cli/2_1_comando_alterar_texto.md