TypeScript - 如何从私有包导入子模块?

问题描述 投票:0回答:1

我正在开发一个用 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)

最后一个问题:正确的方法是什么?这是好的做法吗?

typescript npm package.json
1个回答
0
投票

事实证明,这与使用

tsconfig.json
包的项目的
core
有关。我所要做的就是将
"moduleResolution": "Node16"
添加到配置文件中。

© www.soinside.com 2019 - 2024. All rights reserved.