我想为我们的库创建模块,因此每次调用时,我们都可以使用import {Api, Map} from "ourlibrary"
目前我正在使用以下内容。
import {Api} from "../../Library/Api";
import {MapPage} from "../map/map";
如何创建自己的包以获得以下结果?
import {Api, Map} from "OurLib"
答案 0 :(得分:2)
创建一个顶级ES6样式的js文件,将您的导入导出为单个文件,并将其命名为OurLib
。
exports.Api = require('../../Library/Api').Api;
exports.Map = require('.../map/map').Map;
这种方法的好处是它不会将您绑定到单个模块加载器系统。由于它是直接的ES6功能(需要/导出),它可以被SystemJS,Webpack,Typescript等使用。
如下面的评论中所述,在require语句末尾.Api
和.Map
的原因是因为您通常从文件导入的是类。在
export class Api {}
和
export class Map {}
在每个相应的文件中。这样,您只需分配要导出的类,而不是整个所需的文件。它使您可以更好地控制捆绑的外露模块。
答案 1 :(得分:1)
我认为有两个步骤可以做到:
在SystemJS配置的map
块中创建一个条目:
System.config({
map: {
'OurLib': 'path-to-ourlib'
},
packages: {
'OurLib': {
main: 'index.js',
defaultExtension: 'js'
}
}
});
创建一个TypeScript文件(例如index.ts
)作为入口点模块,用于导入/导出您想在库外提供的内容:
export {Api} from "../../Library/Api";
export {MapPage} from "../map/map";