【发布时间】:2016-12-20 12:08:43
【问题描述】:
我需要一些指导来正确开发可重用的 commonjs 库(npm 包)。 假设库结构如下:
—lib
——Helper.ts
——Serialization.ts
——meta
——— Entity.ts
—index.ts
等等。每个文件都是外部模块。
现在我需要创建一个入口文件(比如 index.ts),它将公开库的功能并用作入口点。 在这里,我无法理解创建它的方式。我想通过导出所有内容来保留嵌套结构而不使其变平:
export * from './lib/Helper’;
export * from './lib/Serialization’;
export * from './lib/meta/Entity’;
…
因为这将删除逻辑分组,并可能在将来导致可能的名称冲突
我也尝试过这样的 index.ts:
import {Helper} from './lib/Helper';
import * as Serialization from './lib/Serialization';
import * as Decorators from './lib/meta/Decorators';
let core = {
Helper: Helper,
Serialization: Serialization,
Meta: {
Entity: Entity,
}
}
export default core;
在我开始使用这样的导入类型之前,它可以完美运行:
import Core from ’nameOfTheNpmPackage';
let Entity = Core.Meta.Entity;
function f(e: Entity)//<—This produce error cannot find name ‘Entity'
{
}
因为它们不在类型声明空间中(如果它们不在命名空间中,有没有办法复制它们?)
我尝试过的另一个选项是使用 outFile + amd 为整个库生成单个 d.ts 文件。但该文件不是外部模块。
所以我的问题是 - 如何编写 index.ts 使其成为外部模块并导出库公开的所有功能。
提前致谢。
【问题讨论】:
标签: typescript npm commonjs