Как экспортировать разные пакеты в одном глобальном пространстве имен

Я работаю над реактивным проектом, используя 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

0 ответов

Другие вопросы по тегам