С помощью Pkg вы можете упаковать свое приложение узла в один исполняемый файл для Windows, Linux или Mac. После этого вы сможете запустить приложение без установки узла.

Установите pkg глобально:
npm install -g pkg

Что нам нужно, так это указать в package.json файл, запускающий приложение с «bin»: «file.js», и, в конечном итоге, активы, которые нужно включить в исполняемый файл, в «pkg». Здесь я включаю все зависимости. Это мой файл package.json:

{
 “name”: “test-app”,
 “version”: “1.0.0”,
 “description”: “”,
 “main”: “index.js”,
 “bin”: “bin.js”,
 “scripts”: {
 “test”: “echo \”Error: no test specified\” && exit 1",
 “start”: “node bin.js”
 },
 “author”: “”,
 “license”: “ISC”,
 “dependencies”: {
 “axios”: “⁰.18.0”,
 “diskusage”: “¹.1.1”,
 “node-powershell”: “⁴.0.0”,
 “os”: “⁰.1.1”,
 “tasklist”: “³.1.1”
 },
 “pkg”: {
 “assets”: [
 “./node_modules/axios/**”,
 “./node_modules/diskusage/**”,
 “./node_modules/node-powershell/**”,
 “./node_modules/os/**”,
 “./node_modules/tasklist/**”,
 “./node_modules/diskusage/**”
 ]
 }
}

Чтобы создать исполняемый файл для Windows, мы можем запустить следующую команду в корне проекта:

Если мы получаем сообщение об ошибке, что какой-то файл не может быть включен в исполняемый файл, нам придется распределить файл вместе с исполняемым файлом в той же папке. Например, я получаю сообщение об ошибке:

> [email protected]
> Warning Cannot include addon %1 into executable.
 The addon must be distributed with executable as %2.
 C:\Users\user\Documents\test-app\node_modules\diskusage\build\Release\diskusage.node
 path-to-executable/diskusage.node

тогда я просто скопирую diskusage.node в ту же папку, где я сохраню исполняемый файл .exe, и распространю эту папку. Когда мы получаем ошибку указанного выше типа, это не препятствует созданию исполняемого файла.

В команде, используемой для создания исполняемого файла, мы можем указать цель в соответствии с:
- nodeRange node $ {n} или последним → В нашем случае это был node10
- платформа freebsd, linux, alpine, macos, win → В нашем случае win
- Arch x64, x86, armv6, armv7 → В нашем случае x64

Для получения дополнительной информации посетите: https://www.npmjs.com/package/pkg.

Если этот урок вам помог, вы можете поблагодарить меня, купив мне кофе.