Упаковка node.js webapp как обычное настольное приложение

Я искал немного, но не могу найти существующий инструмент для этого.

У меня есть веб-сервер node.js, который предназначен для работы на вашем собственном компьютере, который делает для вас некоторые неприятные вещи. Было бы довольно сложно, если бы я мог дважды щелкнуть MySnazzyThing.app вместо установки nodejs и npm и запустить node mysnazzyapp.js в командной строке.

Исполняемый файл .app запустит сервер node и откроет простое собственное окно webkit, которое будет показывать, что обычно будет на localhost:3000, если я буду работать в командной строке.

Это родное приложение может, скажем, быть распространено через магазин приложений Mac. И bam, приложение рабочего стола node.js.

Существует ли такой инструмент? Или есть технические причины, по которым это не сработает, как я себе это представляю?

Ответ 2

Вариант 1: электрон (он же атом-оболочка)

Это оболочка, которую использует редактор github Atom. Он очень похож на node-webkit, хотя сначала он запустит скрипт, и вам нужно создать представление/окно для пользователя. Есть и другие незначительные отличия, но на это стоит обратить внимание.


Вариант 2: NW.js, ранее нод-webkit

Суть в том, что он в основном расширяет механизм JS, чтобы вы могли написать веб-приложение, поддерживающее расширенную объектную модель узлов и модули... затем вы упаковываете свои модули package.json start.html и файлы js в zip (с расширение .nw) и запустите его с помощью nw (.exe). Доступны сборки Windows, Mac и Linux.


Вариант 3: оболочка Carlo chrom (ium) от Node.

Это позволит вам запускать локально установленный Chrome в качестве оболочки, которая может подключаться к локально запущенному серверному приложению. Это требует локального хрома, но очень близко к тому, о чем просили.


Вариант 4: MacGapNode (только OSX)

MacGap с Node-интеграцией (кажется устаревшим)


В сторону: Услуги...

Я не могу говорить об OSX на этом языке как .App, но вполне возможно создать фоновую службу установки в NodeJS и ссылку на "локальный" сайт на рабочем столе. В большинстве браузеров есть возможность не отображать все функции (я знаю, что Firefox, в частности, показывает).

Я знаю, что ваш вопрос касается, в частности, OSX, но в Windows вы можете использовать NSSM для запуска чего-либо как службы, и я использовал его для служб на базе NodeJS в Windows. Я думаю, что некоторые из вышеперечисленных вариантов лучше, в зависимости от ваших потребностей.


Удалены:

  • nexe - несвежий/необслуживаемый
  • AppJS - заменен на DeskShell
  • DeskShell - устаревший, сайт не работает
  • узел-webkit -renamed для NW.js
  • Проект XULRunner застопорился и сильно отстал.
  • Тяга (Node Adapter) - устарела/устарела

Этот ответ скопирован для нескольких вопросов, эти ссылки в основном для удобства обновления.

Ответ 3

Я предлагаю посмотреть в Topcube, цель - "Дать Topcube в github.

Ответ 4

В настоящее время существует множество способов сделать это.

Явный победитель в области упаковки приложения node + html5, в настоящее время является Electron (используется Atom, VSCode, Slack, Discord и т.д.).

Вы также можете использовать любой другой язык, упакованный в виде приложения (используя инструменты для этих языков/стеков), и проверить установку node, запустить "сервер" script с помощью node, а затем запустить по умолчанию браузер (или какой-либо компонент веб-представления, другими способами), наконец, установите местоположение в службу node. Это очень легкий и эффективный метод, однако он не так хорошо интегрирован с ОС как решение, как Electron.

Основным конкурентом Electron здесь является NW.js. Насколько я могу судить, основная особенность, которую NW.js имеет, что Electron пока не является компиляцией/обфускацией. В то время как Electron упрощает автоматическое обновление.

https://electron.atom.io/ https://nwjs.io/

Ответ 5

Не можете ли вы сделать это с помощью bash script? Я не знаю достаточно, чтобы предоставить детали, но это, вероятно, путь.