У меня есть приложение узла, которое я написал, которое я запускаю следующим образом:
node.exe app.js inputArg
Есть ли способ упаковать это в .exe отдельно? Значит, я могу сделать что-то вроде этого?
App.exe inputArg
У меня есть способ подделать это с помощью командного файла, поэтому я могу сделать это:
App.bat inputArg
Но для этого требуется, чтобы у меня были все зависимости и узел в этой папке, что не идеально.
javascript
windows
node.js
exe
Aishwar
источник
источник
Ответы:
Есть несколько альтернатив, как бесплатных, так и коммерческих. Я не использовал ни одного из них, но теоретически они должны работать:
Большинство из них потребует от вас сохранить командный файл в качестве основного исполняемого файла, а затем связать node.exe и ваши сценарии.
В зависимости от вашего скрипта у вас также есть возможность перенести его на JSDB , который поддерживает простой способ создания исполняемых файлов. путем простого добавления к нему ресурсов.
Третье квазирешение - сохранить узел где-нибудь вроде
C:\utils
и добавить эту папку вPATH
переменную среды. Затем вы можете создавать файлы .bat в этом каталоге, который запускает node + ваши предпочтительные сценарии - таким образом я получил coffeescript,coffee
работающий с Windows. Эту настройку можно автоматизировать с помощью командного файла, сценария vb или установщика.источник
Решение, которое я использовал, - это node-webkit Роджера Ванга .
Это фантастический способ упаковки приложений nodejs и их распространения, он даже дает вам возможность «объединить» все приложение в один исполняемый файл. Он поддерживает Windows, Mac и Linux.
Вот несколько документов о различных вариантах развертывания приложений node-webkit, но в двух словах вы делаете следующее:
В качестве дополнительного примечания - я отправил несколько производственных коробок / установочных компакт-дисков, использующих это, и он отлично работал. Одно и то же приложение работает в Windows, Mac, Linux и в Интернете.
Обновление: название проекта было изменено на nw.js и правильно расположено здесь: nw.js
источник
Для тех, кто сталкивается с этим вопросом, теперь есть два проекта, которые создают exes из ваших проектов node, Pkg и Electron.atom.io , они немного отличаются:
В результате получается исполняемый файл ТОЛЬКО для Windows (.exe).Сейчас поддерживаются все платформы.Теперь требуется лицензия на коммерческие продукты.Полностью открытый исходный код.источник
По умолчанию Windows связывает
.js
файлы с Windows Script Host , автономным механизмом выполнения JS от Microsoft. Если вы наберете script.js в командной строке (или дважды щелкните.js
файл в проводнике), сценарий будет выполненwscript.exe
.Это может решить локальную проблему с глобальным параметром , но вместо этого вы можете связать
.js
файлыnode.exe
, чтобы набрать script.js в командной строке или двойном щелчке / перетаскивании элементов в сценарии они запускались с помощью Node.Конечно, если, как и я, вы связали
.js
файлы с редактором, так что двойной щелчок по ним открывает ваш любимый текстовый редактор, это предложение не принесет особой пользы. Вы также можете добавить к.js
файлам пункт контекстного меню «Выполнить с помощью узла» , хотя эта альтернатива не решает ваши потребности в командной строке.Самым простым решением, вероятно, является использование командного файла - вам не обязательно иметь копию Node в папке, в которой находится ваш скрипт. Просто укажите полностью исполняемый файл Node:
Другой альтернативой является это очень простое приложение C #, которое запускает Node, используя собственное имя файла +
.js
в качестве сценария для запуска, и передает любые аргументы командной строки.Поэтому, если вы назовете получившийся EXE-файл «app.exe», вы можете ввести,
app arg1 ...
и Node будет запущен с командной строкой"app.js" arg1 ...
. Обратите внимание, что приложение загрузчика C # немедленно выйдет, а Node будет отвечать за окно консоли.Поскольку это, вероятно, представляет относительно широкий интерес, я пошел дальше и сделал это доступным на GitHub , включая скомпилированный exe, если вам нравится садиться в фургоны с незнакомцами.
источник
Лучший инструмент, который я знаю, - это инструмент NodeJS: zeit / pkg.
Он очень прост в использовании (намного больше, чем Nexe, как пример), вы можете просто установить его глобально:
npm install -g pkg
для создания исполняемых файлов для macOS, Linux и Windows:
pkg exampleApp.js
У меня был немного сложный код, который использовал сервер сокетов NodeJS, я пробовал разные приложения, ни одно из них не создало его должным образом, кроме zeit / pkg .
источник
Не пробовал, но похоже, что nexe может это сделать:
https://github.com/crcn/nexe
источник
Поскольку на этот вопрос был дан ответ, было запущено другое решение.
https://github.com/appjs/appjs
На момент написания этой статьи это было законченное решение для упаковки приложений node.js с помощью урезанного пакета хрома, скомпилированного в исполняемый файл.
Изменить: AppJS больше не активен, но сам предлагает вилку под названием deskshell.
https://github.com/sihorton/appjs-deskshell/
источник
Здесь есть много хороших ответов, но не все они такие простые, как JXcore .
После того, как вы установили JXcore в Windows, все, что вам нужно сделать, это запустить:
Это создаст файл .exe, который вы можете распространять и запускать без каких-либо внешних зависимостей (вам даже не нужны JXcore или Node.js в системе).
Вот документация по этой функциональности: http://jxcore.com/packaging-code-protection/#cat-74
Редактировать 2018
Этот проект теперь мертв, но он все еще размещен здесь: https://github.com/jxcore/jxcore-release (спасибо @Elmue)
источник
Попробуйтеdisclose
: https://github.com/pmq20/disclosedisclose
по сути, делает самораспаковывающийся exe из вашего проекта Node.js и интерпретатора Node.js со следующими характеристиками:Нет графического интерфейса. Чистый CLI.Нет зависимостей во время выполненияПоддерживает как Windows, так и UnixВ первый раз выполняется медленно (извлечение в каталог кеша), затем быстро всегдаПопробуйте
node-compiler
: https://github.com/pmq20/node-compilerЯ создал новый проект, призванный
node-compiler
скомпилировать ваш проект Node.js в один исполняемый файл.Это лучше, чем
disclose
то, что он никогда не запускается медленно в первый раз, поскольку ваш исходный код компилируется вместе с интерпретатором Node.js, как и стандартные библиотеки Node.js.Кроме того, он прозрачно перенаправляет запросы файлов и каталогов в память, а не в файловую систему во время выполнения. Таким образом, для запуска скомпилированного продукта не требуется исходного кода.
Как это устроено: https://speakerdeck.com/pmq20/node-dot-js-compiler-compiling-your-node-dot-js-application-into-a-single-executable
По сравнению с аналогичными проектами,
pkg ( https://github.com/zeit/pkg ): Pkg взломал fs. * API динамически, чтобы получить доступ к файлам внутри пакета, тогда как Node.js Compiler оставляет их в покое и вместо этого работает на более глубоком уровне через libsquash. Pkg использует JSON для хранения файлов в пакете, а Node.js Compiler использует более сложную и широко используемую SquashFS в качестве структуры данных.
EncloseJS ( http://enclosejs.com/ ): EncloseJS ограничивает доступ к файлам в пакете только пятью API-интерфейсами fs. *, Тогда как Node.js Compiler поддерживает все API-интерфейсы fs. *. EncloseJS имеет проприетарную лицензию и взимает деньги при использовании, в то время как Node.js Compiler имеет лицензию MIT, и пользователи могут использовать его и изменять.
Nexe ( https://github.com/nexe/nexe ): Nexe не поддерживает динамическое требование из-за его использования browserify, тогда как компилятор Node.js поддерживает все виды требований, включая require.resolve.
asar ( https://github.com/electron/asar ): Asar использует JSON для хранения информации о файлах, а компилятор Node.js использует SquashFS. Asar хранит архив кода и исполняемый файл отдельно, в то время как компилятор Node.js связывает весь исходный код JavaScript вместе с виртуальной машиной Node.js и генерирует один исполняемый файл в качестве конечного продукта.
AppImage ( http://appimage.org/ ): AppImage поддерживает только Linux с ядром, поддерживающим SquashFS, в то время как Node.js Compiler поддерживает все три платформы Linux, macOS и Windows, при этом без каких-либо особых требований к функциям ядра.
источник
Я рекомендую вам BoxedApp для этого. Это коммерческий продукт, который работает очень хорошо. Он работает с любым приложением NodeJS. Конечный пользователь получит только один EXE-файл для вашего приложения. Нет необходимости в установке.
В Electron, например, конечный пользователь должен установить / распаковать ваше приложение, и он увидит все исходные файлы вашего кода.
BoxedApp Он упаковывает все файлы и зависимости, которые нужны вашему приложению NodeJS. Он поддерживает сжатие, а скомпилированный файл работает в Windows XP +.
Когда вы его используете, обязательно добавьте Node.EXE в скомпилированное приложение. Выберите версию узла, которая поддерживает Windows XP (если вам это нужно)
Программа поддерживает аргументы командной строки, поэтому после упаковки вы можете сделать
И вы можете получить аргумент в коде вашего узла:
Иногда ваше приложение имеет зависимости файлов, поэтому в BoxedApp вы можете добавить любую папку и файл в качестве зависимости, например, вы можете вставить файл настроек.
Больше информации:
источник
Я обнаружил, что любое из этих решений соответствует моим требованиям, поэтому создал свою собственную версию узла под названием node2exe, которая делает это. Он доступен по адресу https://github.com/areve/node2exe.
источник
Я изучаю эту тему несколько дней и вот что я нашел. Варианты делятся на две категории:
Если вы хотите создать настольное приложение, лучшие варианты:
Вот хорошее сравнение между ними: NW.js и Electron по сравнению . Я думаю, что NW.js лучше, и он также предоставляет приложение для компиляции файлов JS. Существуют также отдельные сборщики исполняемых файлов и установщиков, такие как Enigma Virtual Box . Оба они содержат встроенную версию Chrome, которая не нужна для серверных приложений.
Если вы хотите упаковать серверное приложение, это лучшие варианты:
В этой категории я считаю, что компилятор узлов лучше, который поддерживает динамические требуемые и собственные модули узлов. Его очень легко использовать, а размер вывода начинается с 25 МБ. Вы можете прочитать полное сравнение с другими решениями на странице Node Compiler. Я не очень много читал о Nexe, но сейчас кажется, что Node Compiler не компилирует файл js в двоичный формат с помощью функции моментального снимка V8, но он запланирован для версии 2. Он также будет иметь встроенный конструктор установщика.
источник
Electron
не оправдывает быть действительным предложением по проблеме OP; это совершенно другая структура Node.Попробуйте nexe, который создает один исполняемый файл из ваших приложений node.js
https://github.com/nexe/nexe
источник
Устал начинать выигрыш из командной строки, тогда я тоже наткнулся на это. Немного улучшенная вер. над чем josh3736 . При этом используется XML-файл для получения некоторых настроек. Например, путь,
Node.exe
а также файл для запуска в app.js. по умолчанию. Также загружаемая среда (production, dev и т. Д.), Которую вы указали в своем app.js (или server.js, или как там вы его называли). По сути, он добавляет,NODE_ENV={0}
где {0} - это имя вашей конфигурации в app.js в качестве переменной для вас. Вы делаете это, изменяя элемент «режим» в config.xml. Вы можете взять проект здесь ==> директория, просто чтобы сохранить шаг. В противном случае отредактируйте их, иначе ваша сборка выдаст предупреждение. github . Обратите внимание, что в событиях Post Build вы можете изменить пути копирования, чтобы автоматически копировать файл config.xml и исполняемый файл на свойNodejs
источник
Может быть много других вариантов, но, насколько мне известно, есть один проект в активной разработке на GitHub https://github.com/zeit/pkg . Вы можете поиграть с этим. Еще один на https://github.com/nexe/nexe, но не в активной разработке.
источник
Существует проект инструмента сборки с открытым исходным кодом под названием nodebob . Я предполагаю, что рабочие окна платформы,
Вы найдете исполняемый файл внутри папки выпуска.
источник