我正在开发一个用 TypeScript 编写的私有 npm 包,必须在其他 TS 项目中重用。我创建(并发布)了一个
@myorg/core
包,我想用它来提供在多个存储库中使用的枚举和类型(而不是每次都重新清除它们)。
在包的
tsconfig.json
中,我有 "declaration": true
,以便导出描述其 API 的文件。事实上,当我构建时,.d.ts 文件被创建。
关于项目结构
src/
├── enumerators/
│ └── index.ts
├── database-models/
│ └── index.ts
├── external-apis/
│ └── index.ts
└── index.ts
src/index.ts
的意思是导出所有资源,代码:
export * as ExternalAPIs from './external-apis';
export * as Enumerators from './enumerators';
export * as DatabaseModel from './database-model';
现在我想了解如何直接导入这些资源。我的意思是而不是做
import * as MyOrgCore from '@myorg/core'
我想做
import * as Enumerators from '@myorg/core/Enumerators'
在互联网上搜索信息并找到有关使用 package.json 中的导出字段的建议,这是它的样子(简化)
{
"name": "@myorg/core",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"exports": {
".": "./dist/index.js",
"./Enumerators": "./dist/enumerators/index.js",
"./ExternalAPIs": "./dist/external-apis/index.js",
"./DatabaseModels": "./dist/database-model/index.js"
}
}
这没有帮助,因为当我按照我想要的方式导入时,我得到了
找不到模块“@myorg/core/Enumerators”或其相应类型 声明.ts(2307)
最后一个问题:正确的方法是什么?这是好的做法吗?
事实证明,这与使用
tsconfig.json
包的项目的 core
有关。我所要做的就是将 "moduleResolution": "Node16"
添加到配置文件中。