Как сделать exe-файлы из приложения node.js? - PullRequest
109 голосов
/ 17 ноября 2011

У меня есть приложение для узла, которое я написал и которое я запускаю следующим образом:

node.exe app.js inputArg

Есть ли какой-нибудь способ, которым я могу упаковать это в .exe самостоятельно?Так что я могу просто сделать что-то вроде этого?

App.exe inputArg

У меня есть способ подделать это с помощью командного файла, поэтому я могу сделать это:

App.bat inputArg

Но для этого необходимо, чтобы у меня были все зависимости и узел в этой папке, что не идеально.

Ответы [ 16 ]

3 голосов
/ 25 марта 2014

Я обнаружил, что любое из этих решений удовлетворяет моим требованиям, поэтому создал собственную версию узла под названием node2exe, которая делает это.Это доступно от https://github.com/areve/node2exe

1 голос
/ 01 августа 2017

Попробуйте nexe, который создает один исполняемый файл из ваших приложений node.js

https://github.com/nexe/nexe

1 голос
/ 28 июня 2017

Я изучал эту тему в течение нескольких дней, и вот что я нашел. Опции делятся на две категории:

Если вы хотите создать настольное приложение, лучшие варианты:

1- NW.js : позволяет вызывать все модули Node.js напрямую из DOM и предоставляет новый способ написания приложений со всеми веб-технологиями.

2- Electron : создание кросс-платформенных приложений для настольных ПК с использованием JavaScript, HTML и CSS

Вот хорошее сравнение между ними: NW.js & Electron Compared . Я думаю, что NW.js лучше, и он также предоставляет приложение для компиляции файлов JS. Есть также несколько автономных сборщиков исполняемых файлов и инсталляторов, таких как Enigma Virtual Box . Они оба содержат встроенную версию Chrome, которая не нужна для серверных приложений.

если вы хотите упаковать серверное приложение, это лучшие варианты:

node-compiler : Компилятор с опережением времени (AOT), разработанный для Node.js, который просто работает.

Nexe : создайте один исполняемый файл из ваших приложений node.js

В этой категории я считаю, что нод-компилятор лучше, который поддерживает динамические требования и модули нативных узлов. Он очень прост в использовании, и его выход начинается с 25 МБ. Полное сравнение с другими решениями вы можете прочитать на странице Node Compiler. Я мало читал о Nexe, но сейчас, похоже, Node Compiler не компилирует файл js в двоичный формат с помощью функции моментальных снимков V8, но он запланирован для версии 2. Он также будет иметь встроенный сборщик установщика.

1 голос
/ 01 мая 2017

Может быть много других вариантов, но, насколько мне известно, в GitHub есть один проект в активной разработке https://github.com/zeit/pkg. Вы можете играть с ним.Еще один на https://github.com/nexe/nexe, но не в активной разработке.

1 голос
/ 27 мая 2012

Надоело начинать с выигрыша из командной строки, а затем я столкнулся с этим.Слегка улучшенная версиянад чем josh3736 .Это использует файл XML, чтобы получить несколько настроек.Например, путь к Node.exe, а также файл для запуска в файле app.js. по умолчанию.Кроме того, среда для загрузки (production, dev и т. Д.), Которую вы указали в своем app.js (или server.js или как вы его называли).По сути, он добавляет NODE_ENV={0}, где {0} - это имя вашей конфигурации в app.js как переменная для вас.Вы делаете это, изменяя элемент «mode» в config.xml.Вы можете получить проект здесь ==> github .Обратите внимание, что в событиях Post Build вы можете изменить пути копирования для автоматического копирования вашего config.xml и исполняемого файла в каталог Nodejs, просто чтобы сохранить шаг.В противном случае отредактируйте их или ваша сборка выдаст предупреждение.

var startInfo = new ProcessStartInfo();
        startInfo.FileName = nodepath;
        startInfo.Arguments = apppath;
        startInfo.UseShellExecute = false;
        startInfo.CreateNoWindow = false;
        startInfo.WindowStyle = ProcessWindowStyle.Hidden;

        if(env.Length > 0)
            startInfo.EnvironmentVariables.Add("NODE_ENV", env);

        try
        {
            using (Process p = Process.Start(startInfo))
            {
                p.WaitForExit();
            }
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message.ToString(), "Start Error", MessageBoxButtons.OK);
        }
0 голосов
/ 21 апреля 2017

Существует проект инструмента сборки с открытым исходным кодом, который называется nodebob .Я предполагаю, что Windows рабочей платформы

  1. просто клонирует или загружает проект
  2. копирует все ваши файлы проекта node-webkit в папку приложения.
  3. запустите сборкуСценарий .bat.

Вы найдете исполняемый файл в папке выпуска.

...