gpt4 book ai didi

node.js - typescript 和子路径导入

转载 作者:行者123 更新时间:2023-12-05 04:25:11 24 4
gpt4 key购买 nike

我正在尝试让 Node 子路径导入和 typescript 正常工作。我的 IDE 在解析导入时没有问题,但 Typescript 总是不高兴。

Github 代码库:https://github.com/doronrosenberg/ts-subpath-imports .

package.json:

  "imports": {
"#internal/*": "./internal/*.ts",
"#internal2": "./internal"
}

tsconfig.json:

  "paths": {
"#internal/*": "./internal/*.ts",
"#internal2": ["./internal"]
}

和代码:

import { foo } from "#internal/index";
import { bar } from "#internal2";

无论我如何设置,我总是得到:

src/test.ts:1:21 - error TS2307: Cannot find module '#internal/index' or its corresponding type declarations.

1 import { foo } from "#internal/index";
~~~~~~~~~~~~~~~~~

src/test.ts:2:21 - error TS2307: Cannot find module '#internal2' or its corresponding type declarations.

2 import { bar } from "#internal2";
~~~~~~~~~~~~

有什么想法吗?

最佳答案

在使用 Typescript 研究了几周之后,我找到了一个可行的解决方案。

假设我有一个名为 @kodadot1/metasquid 的包,其中包含多个子模块(consolidatorentity)。

在我的 package.json 中,我声明了 imports

  "exports": {
".": {
"import": "./dist/index.mjs",
"require": "./dist/index.cjs"
},
"./consolidator": {
"types": "./dist/consolidator.d.ts",
"import": "./dist/consolidator.mjs",
"require": "./dist/consolidator.cjs"
},
"./entity": {
"types": "./dist/entity.d.ts",
"import": "./dist/entity.mjs",
"require": "./dist/entity.cjs"
}
}

诀窍是为项目根目录中的每个子模块创建一个 .d.ts 文件。

所以对于子模块 entity,我将创建一个名为 entity.d.ts 的文件,其中包含

export * from './dist/entity'

现在在 npmjs 中正确发布它像这样扩展你的 package.json:

  "files": [
"dist",
"*.d.ts"
]

现在只需发布,您就可以享受子路径导入:

import { get } from '@kodadot1/metasquid/entity'

Whole code is available here

关于node.js - typescript 和子路径导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73327767/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com