Neste post, faremos um hands-on do módulo PKG, que serve basicamente para transformarmos nosso aplicativo node em executável, ou seja, podemos distribuir esta aplicação sem precisar instalar o ambiente do node ou até mesmo mandar o mesmo dentro deste executável.
Qual a vantagem disso?
Com isso, podemos, por exemplo, efetuar demonstrações ou distribuir o software em si. Uma das ideias que vou mostrar aqui é distribuir uma aplicação em express, podendo enviar este arquivo a um cliente apenas dentro de um executável.
Primeiramente vamos instalar este módulo:
npm install -g pkg
Em seguida vamos adicionar um express:
yarn add express
Depois iremos no Visual Studio Code e criamos um index.js
const express = require('express')
const app = express()
app.get('/', (req, res)=>{
res.send('Bem vindo ao meu-app')
)}
app.listen(3000, ()=>{
console.log('Running meu-app')
}
Ele irá ‘ouvir’ a porta 3000 e, se tudo ocorrer bem, mostrará a mensagem “running meu-app”
Originalmente o package virá assim:
{
"dependencies": {
"express": "^4.15.2"
}
}
Mas iremos fazer algumas modificações. A primeira coisa que devemos fazer é adicionar o nome do nosso aplicativo (“name”: “meuapp”), precisamos também dizer quem é nosso ponto de entrada (“bin”: “index.js”)
e a última modificação é opcional, pois nele podemos dizer se queremos mandar algum diretório além do module e qual target, ou seja, quais versões do Node quero ‘empacotar’ neste aplicativo.
{
name": "meuapp",
"dependencies": {
"express": "^4.15.2"
},
"bin": "index.js",
"pkg":{
"assets":[
"view/\*\*/\*"
],
"target": [
"node7"
]
}
}
Para executarmos isso, vamos no Node e colocamos:
pkg . (pkg ponto)
Com isso, solicitamos o node para empacotar a aplicação utilizando o package.json. Isso é legal porque podemos entregar este aplicativo para o cliente, demo, trial, etc, criando um instalador.
Lembrando que nós continuamos tendo acesso total ao código. Usando o express, podemos abrir em outra máquina e ler a faixa de IP que a máquina principal está rodando e na interface mostrar para o cliente “para acessar este aplicativo use o IP xxx.xxx.xxx.xxx em uma máquina de sua rede.”
Assim, várias pessoas conseguem acessar o mesmo aplicativo. É possível utilizar o Package sem a necessidade do Package.json, por exemplo passando direto o ponto de entrada, mas eu prefiro usar o package.json para ficar documentado, deste modo não precisamos lembrar todos os parâmetros sempre.
Confira o video:
Curta o DevPleno no Facebook, inscreva-se no canal e não se esqueça de cadastrar seu e-mail para não perder as novidades. Ah, fique à vontade para deixar suas dúvidas e sugestões nos comentários. Abraço!
Mestre em Sistemas de Informação pela USP e criador do DevPleno. Iniciou sua carreira como professor com apenas 18 anos em um curso técnico, foram 11 anos em sala de aula formando desenvolvedores fullstack no sul de Minas Gerais.