Я иногда выполняю заказы на мелкие программы.

Например — задача скачать кучу картинок по адресам из Excel файла.

Это очень легко и быстро реализуется на Node.js в виде консольного приложения. Можно за час или пару часов успеть написать с нуля и протестировать.

Доставка утилиты заказчику

Проблема только в том, как эту утилиту доставить заказчику.

Движок Node.js это интерпретатор, он не компилирует исходники в исполняемый код.

Так запускается консольное приложение Node.js:

node app.js

Получается, что предоставляя свою утилиту клиенту, потребуется:

  1. Установить ему Node.js

  2. Написать инструкцию как запускать терминал, а потом какую команду вводить в терминале.

Это всё долго и мучительно. Я искал, как упростить процесс и запаковать утилитку в единый исполняемый файл.

Pkg

И вот наконец нашёл )

https://github.com/vercel/pkg

Это сборщик приложений Node.js.

Пакует всё в исполняемый файл и делает билд под три системы: Linux, MacOS, Windows.

Инструкция

  • Устанавливаем пакет сборщика глобально:

    npm install -g pkg
    
  • Прописываем секцию “bin” в package.json:

    "bin": {
      "app" : "app.js"
    },
    
  • Прописываем секцию “pkg” в package.json, добавляем необходимые настройки (см. документацию):

    "pkg": {
      "assets": "credentials.json",
      "targets": [ "node14-win-x64" ],
      "outputPath": "dist"
    }
    
  • Запускаем сборку:

    pkg --compress GZip .
    

Проверил, работает )

Теперь будет достаточно отправить заказчику один файл. Запустить утилиту можно будет как любое приложение, просто щелчком мышки.