Сделать несколько приложений nodejs зависимыми от одного node.dll или libnode.dylib? - PullRequest
0 голосов
/ 03 сентября 2018

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

Все решения, которые я могу найти для упаковки приложений узла, упаковывают nodejs саму себя в исполняемый файл, поэтому в случае, когда мне нужны 2 отдельных исполняемых файла узла, увеличение размера загружаемой пользователем информации возрастает довольно резко (~ 20 МБ) .

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

Есть ли способ превратить мои приложения JavaScript в небольшие исполняемые файлы и использовать внешнюю библиотеку для узла?


Windows

enter image description here


Mac

enter image description here

1 Ответ

0 голосов
/ 03 сентября 2018

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

См. Код ниже,

const app = require('./app');

const arg = process.argv[2];

const app1 = 'app1';
const app2 = 'app2';
const app3 = 'app3';

const logger = new Logger('app-main');

switch (arg) {

    case app1:
        app.startApp1();
        break;

    case app2:
        app.startApp2();
        break;

    case app3:
        app.startApp3();
        break;

    default:
        logger.err('Invalid Argument ' + arg);

}

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

Но в противном случае вам может понадобиться отправить только ваш код и создать собственную среду выполнения с помощью nodejs и отправить ее пользователю перед установкой оригинального all. Таким образом, вы можете иметь универсальный пакет времени выполнения в виде электрона.

...