Как экспортировать разные пакеты в одном глобальном пространстве имен
Я работаю над реактивным проектом, используя jspm 0.17-beta.32 .
Приложение состоит из нескольких пакетов (определенных в файле jspm.config).
Я хочу, чтобы каждый пакет упаковывался независимо, как статические сборки, и экспортировал его значение в одно и то же глобальное пространство имен.
Для этого я использую следующую команду:
jspm build "<name>" build/<name>.js
--format umd
--externals react react-dom
--global-deps '{"react":"React","react-dom":"ReactDOM"}'
--global-name myGlobal
--minify
--production
И в моем коде:
// inside src/<name>/index.js
import React from 'react';
import MainComponent from '<name>/components/MainComponent.jsx';
export const <name> = { MainComponent };
куда <name>
это название моей посылки.
Проблема в том, что если я включу два пакета, последний всегда будет первым.
Так что, если я изменю глобальный, чтобы экспортировать в myGlobal.<name>
в моей команде, и измените экспорт внутри js-файлов на:
// inside src/<name>/index.js
import React from 'react';
import MainComponent from '<name>/components/MainComponent.jsx';
export default MainComponent;
Затем в моем html-файле консоль записывает сообщение об ошибке: myGlobal is not defined
,
Итак, я заглянул внутрь статического файла сборки, и он в основном это делает.
// inside build/<name>.js
(
...
factory function here, tracking dependencies
...
)(function(factory) {
if (typeof define == 'function' && define.amd)
define(["react-dom","react"], factory);
else if (typeof module == 'object' && module.exports && typeof require == 'function')
module.exports = factory(require("react-dom"), require("react"));
else
myGlobal.<name> = factory(ReactDOM, React);
});
Это объясняет, почему значение myGlobal
был переопределен в первый раз, и почему я получаю эту ошибку сейчас, потому что она никогда не объявляется.
- Есть ли способ иметь вложенные глобальные переменные, используя systemJs?
- Могу ли я что-нибудь сделать, чтобы
myGlobal
создается, если еще не объявлено, при использованииumd
формат?
GitHub здесь: https://github.com/jspm/jspm-cli/issues/2254