Habitualmente la distribución de las aplicaciones creadas con Node se realiza enviando el código fuente y los archivos de configuración. Obligando al receptor a instalar las dependencias para ejecutar el programa. Un método que tiene varias ventajas, como la de poder instalar el programa en diferentes sistemas. Aunque también tiene desventajas, como la de no poder proteger el código desarrollado. Por eso, en ciertas ocasiones, puede ser beneficioso empaquetar aplicaciones de Node como un binario independiente. Lo que se puede conseguir gracias a pkg.
Si la forma habitual de distribuir los programas Node en forma de código fuente nos podemos preguntar ¿qué ventajas tiene crear un binario? Las ventajas son múltiples. Una de las más obvias es la posibilidad de proteger el código fuente y cualquier credencial, pero también se simplifica el uso de los programas.
Al empaquetar las aplicaciones de Node como un binario con pkg se incluye no solo nuestro código, sino que también las dependencias y el runtime. Evitando de este modo problemas de compatibilidad por el hecho de que se intente ejecutar el programa sobre una versión diferente de Node. Evitando de este modo algunos de los problemas típicos en los procesos de instalación.
Para crear una aplicación con pkg lo primero que vamos a necesitar es instalar el paquete. Al ser un programa que se usará en múltiples proyectos lo ideal es instalarlo de forma global, para lo que se puede usar la siguiente línea
npm install -g pkg
Siendo necesario en macOS y Linux incluir el comando sudo previamente.
Ahora solamente es necesario crear un programa básico con el que trabajar, para lo podemos recurrir otra vez a la línea de comandos.
mkdir test
cd test
npm init -y
Una vez hecho esto podemos crear un simple archivo index.js en el que incluiremos un mensaje. Por ejemplo,
console.log('Binario creado con pkg'); Pudiendo comprobar que funciona correctamente escribiendo en la terminal el siguiente comando
node index
Antes de compilar el proyecto es necesario indicar mediante la opción bin en el archivo package.json cuál es el punto de inicio del programa. Una opción que se puede situar después de main en la apuntaremos al archivo creado anteriormente. Una vez hecho esto se puede usar el comando pkg para crear los paquetes, escribiendo para ello la siguiente línea en la terminal.
pkg .
Lo que creará tres versiones del programa, una para Windows, otra para macOS y otra para linux. Siendo el nombre de los archivos el del paquete seguido de un guión medio y el nombre de la plataforma. Lo que se producirá independientemente del sistema operativo sobre el que estemos trabajando. Así, para ejecutar la versión de macOS solamente deberemos escribir en la terminal
./test-macos
Además, estos archivos ofrecen la ventaja de no requerir la instalación de ningún otro programa en el ordenador de destino. Ni siquiera es necesario que se instala Node, ya que la versión correcta se incluye dentro del ejecutable.
Posiblemente en la mayoría de los casos no nos interese tener las tres versiones del programa y el nombre no sea el adecuado. Algo que es posible solucionar mediante el uso de algunas opciones. Por ejemplo, la opción -t permite seleccionar la plataforma sobre la que se compila el proyecto y -o permite dar un nombre al archivo de salida. Así para crear un compilar con node14 para macOS sobre procesadores Intel de nombre sample se puede escribir en la terminal
pkg -t node14-macos-x64 -o sample .
Lo que nos evita crear las versiones que no vamos a necesitar.
En esta ocasión hemos podido ver cómo empaquetar aplicaciones de Node como un binario independiente gracias a pkg. Una solución con la que podemos evitar algunos de los problemas que pueden aparecer al distribuir aplicaciones desarrolladas sobre Node. Debido a que de esta forma estaremos seguros de que se usará la versión adecuada de Node.
Imagen de freestocks-photos en Pixabay
En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…
En la serie Creación de una API REST con Express y TypeScript construimos una API…
Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…
En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…
Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…
En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…
This website uses cookies.