我需要一些指导来正确开发可重用的commonjs库(npm包)。 可以说库的结构如下:Commonjs库的index.ts作为外部模块
—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’;
…
因为这将删除逻辑分组,并可以在将来导致可能的名称冲突
我也曾尝试进行索引。 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'
{
}
,因为它们不是在类型声明空间(有没有复制他们,如果他们不是在命名空间的方式?)
我曾尝试是产生单d.ts文件全库的另一种选择使用outFile + amd。但该文件不是外部模块。
所以我的问题是 - 如何写index.ts,以便它将是外部模块,并导出由库公开的所有功能。
在此先感谢。