Как загружать модули с помощью SystemJS, если они сгенерированы TypeScript как один файл, содержащий несколько подмодулей?Загрузка модуля TypeScript с подмодулями в SystemJS
В настоящее время у меня есть большая библиотека с именем form, которая построена в одном файле, содержащем несколько подмодулей (например, пакеты). Для создания файла библиотеки я использую этот TSconfig:
{
"compilerOptions": {
"target": "ES5",
"module": "system",
"moduleResolution": "node",
"noResolve": true,
"outFile": "../dist/lib/form.js",
"declaration": true,
"removeComments": false,
"noImplicitAny": true
},
"exclude": [
"lib",
"node_modules"
],
"filesGlob": [
"**/*.ts"
]
}
В результате я получаю form.js файла, который содержит модули, что сами по себе содержат классы и так далее.
Теперь я хочу использовать эту сгенерированную библиотеку в другом проекте под названием shop. Но каждый раз, когда я пытаюсь использовать классы из подмодулей, SystemJS пытается загрузить подмодули из подкаталога вместо самой библиотеки.
Например:
import {Version} from 'form'; // loaded from 'form.js'
import {ObservableSet} from 'form/collection'; // loaded from 'form/collection.js'
import {Button} from 'form/ui/control'; // loaded from 'form/ui/control.js'
Но я хочу, чтобы загрузить все из них только form.js, потому что «форма/коллекции» и «вида/UI/управления» модули, определенные в форме .js. Файлы форму/collection.js и 'form/ui/control.js' не существует.
Итак, как бы изменить следующую конфигурацию для SystemJS, чтобы она загружала все три класса из form.js?
System.config({
baseURL: '.',
defaultExtension: 'js',
paths: {
'*': '*.js'
},
map: {
'form': 'lib/form',
'shop': 'lib/shop',
'is': 'lib/is',
'jquery': 'lib/jquery-2.1.4'
}
});
System.import('shop');
Каталог раскладка:
/lib/form.js (the module file, containing multiple modules)
/lib/shop.js (the application)
/lib/...
/config.js (config for systemjs, as shown)
/index.html