Может ли плагин sbt-crossproject поддерживать две сборки Scala.js с двумя отдельными основными классами, оба с выходом, управляемым плагином scalajs-bundler? - PullRequest
0 голосов
/ 13 марта 2019

Предположим, у вас есть проект Scala.js, который многозначно компилируется в браузер JavaScript, Node.js и JVM.

Теперь представьте, что в браузере часть приложения запускается в окне, а другая - в веб-работнике.

Может ли SBT связать две версии исходного кода? В одной версии есть основной класс для окна браузера, а в другой - другой основной класс, который выполняет код веб-работника?

Если так, как бы вы это настроили?

Обратите внимание, что проект зависит от собственных библиотек JavaScript и веб-пакета.

1 Ответ

0 голосов
/ 26 марта 2019

Я делаю именно это в одном из моих проектов, но с классом main только для JVM.Браузер загружает переданный scalajs-код и метод небольшого хука, запускаемые js-файлом, инициализирующие ядро, с различными параметрами.Это работает для Webworker и Frontend-thread и даже для SharedWorker

Это может выглядеть так:

importScripts("client-fullopt.js");
importScripts("conf/app-config.js");

MyProject.WebWorkerActorParent.initBackend(myProjectConfig);
MyProject.WebWorkerActorParent.addWorker(this);

на внешнем интерфейсе это может быть глобальный импорт скрипта идругая подпрограмма инициализации.

<script src='client-fullopt.js' />
<script>
  MyProject.WebWorkerActorParent.initFrontend();
</script>

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

...