Можно ли скомпилировать приложение JS + интерпретатор NodeJS в один исполняемый файл? - PullRequest
7 голосов
/ 27 августа 2010

Можно ли скомпилировать приложение JS и интерпретатор NodeJS в один исполняемый файл для распространения?

Ответы [ 3 ]

6 голосов
/ 13 октября 2010

вам понадобится linux box с git и python, а затем безобразное решение:

$ git clone git://github.com/ry/node.git
$ cd node
$ vim src/node.js    # add your code to end before "process.loop();"
$ ./configure
$ make
$ sudo make install
$ node
1 голос
/ 13 марта 2011

Если ваша цель - выполнить javascript, вы можете создать простую программу-обертку на C или C ++, которая будет вызывать интерпретатор и оценивать ваш JS. Если вам нужен один файл, источник js может быть включен как строковая константа.

Когда вы компилируете программу-обертку, вам нужно статически связать ее с узлом и остальной частью дерева зависимостей. Вместо того, чтобы зависеть от разделяемых библиотек в системе, статическое связывание скопирует процедуры, от которых зависит ваш проект, в скомпилированный двоичный файл.

Как вы это сделаете, будет зависеть от вашей среды

1 голос
/ 13 октября 2010

Можно ли скомпилировать приложение JS и интерпретатор NodeJS в один исполняемый файл для распространения?

Это может показаться очевидным, но вот мое мнение.

«Один исполняемый файл для распространения» звучит очень похоже на установщик ...

Установщик может содержать или иметь возможность извлекать онлайн ваши js-скрипты и скомпилированный файл node.js.Было бы распаковать все и создать скрипт в /etc/init.d/ для запуска и остановки сервера.

Если бы все ваши клиенты были в одном дистрибутиве (например, Debian), я бы просто сделал пакетдля соответствующего упаковочного инструмента (например, apt) и пусть пакетный инструмент обрабатывает все.

Если у всех клиентов разные дистрибутивы, вы можете посмотреть autopackage .

...