Обычно распространение приложений, созданных с помощью Node, осуществляется путем пересылки исходного кода и конфигурационных файлов. Заставляя получателя устанавливать зависимости для запуска программы.
Этот метод имеет ряд преимуществ, например, возможность установки программы на разных системах.
Однако у него есть и недостатки, например, невозможность защитить разработанный код. Вот почему в некоторых случаях может быть полезно упаковывать приложения Node как отдельный двоичный файл. Этого можно добиться с помощью pkg.
Содержание
Зачем упаковывать приложения Node?
Если обычный способ распространения программ Node – это исходный код, то в чём плюсы создания двоичного кода? Существует множество преимуществ. Одним из наиболее очевидных является возможность защиты исходного кода и любых учетных данных, но это также упрощает использование программ.
Упаковка приложений Node в виде двоичного файла с помощью pkg включает не только наш код, но и зависимости и время выполнения. Это позволяет избежать проблем совместимости при попытке запустить программу на другой версии Node. Таким образом можно избежать некоторых типичных проблем в процессе установки.
Упаковка базового приложения Node с помощью pkg
Чтобы создать приложение с помощью pkg, первое, что нам нужно сделать, это установить пакет.
Поскольку эта программа будет использоваться в нескольких проектах, идеальным вариантом будет установить ее глобально, для чего можно использовать следующую строку
npm install -g pkg
На macOS и Linux необходимо предварительно включить команду sudo.
Создание базового проекта
Теперь осталось только создать базовую программу для работы, для чего мы снова можем прибегнуть к командной строке.
mkdir test cd test npm init -y
Как только это будет сделано, мы можем создать простой файл index.js, в который мы включим сообщение. Например,
console.log('Двоичный файл, созданный с помощью pkg');
Code language: JavaScript (javascript)
Вы можете проверить, что он работает правильно, набрав в терминале следующую команду
node index
Компиляция проекта
Перед компиляцией проекта необходимо указать начальную точку программы с помощью опции bin в файле package.json. После main может быть помещена опция, указывающая на файл, созданный ранее.
После этого можно использовать команду pkg для создания пакетов, набрав в терминале следующую строку.
pkg .
Это позволит создать три версии программы: одну для Windows, одну для macOS и одну для Linux. Имя файлов будет представлять собой имя пакета, за которым следует дефис и название платформы.
Это произойдет независимо от операционной системы, на которой мы работаем.
Для запуска версии для macOS нам достаточно набрать в терминале
./test-macos
Кроме того, преимущество этих файлов в том, что они не требуют установки какого-либо другого программного обеспечения на целевом компьютере. Node даже не нужно устанавливать, поскольку нужная версия включена в исполняемый файл.
Переименование программы и компиляция для одной системы
Возможно, в большинстве случаев мы не хотим иметь все три версии программы, и ее название окажется неподходящим. Это можно решить с помощью некоторых опций.
Например, опция -t позволяет выбрать платформу, на которой компилируется проект, а -o позволяет задать имя выходного файла.
Итак, чтобы создать компиляцию с помощью node14 для macOS на процессорах Intel с именем sample, вы можете набрать в терминале
pkg -t node14-macos-x64 -o sample .
Это избавляет нас от создания версий, которые нам не нужны.
Заключение
В этой статье мы рассмотрели, как упаковывать приложения Node в виде отдельного двоичного файла благодаря pkg. Решение, с помощью которого мы можем избежать некоторых проблем, которые могут возникнуть при распространении приложений, разработанных поверх Node.
Потому что так мы можем быть уверены, что будет использована правильная версия Node.