如何解决使用路径和 tsconfig-paths 发布打字稿库
我想将共享的公共代码放入私有 npm 注册表中。
使用以下命令 & tsconfig 一直工作得很好,直到我想通过发布到 npm 注册表使一个项目依赖于另一个项目。
我有几个文件夹和很多文件,所以我使用了路径和 tsconfig-paths(导入看起来很干净,例如 import { Repo } from "adapters/api/repository";
)。
公共项目自己可以正确构建,但是一旦发布并用作依赖项,当我构建使用它的项目时就会出现构建错误。
常见项目;构建良好:使用 rm -rf dist && tsc --sourceMap -p ./ && cp tsconfig.json dist/ && cp .env dist/
。
包的文件结构为:
dist
src
adapters
api
repository.d.ts
repository.js
...
application
interfaces
interfaceA.d.ts
interfaceA.js
...
...
index.d.ts
index.js
tsconfig.json
其中 src/adapters/api/repository.ts
是:
import { InterfaceA } from "application/interfaces/interfaceA";
export interface ApiRepository {
property: InterfaceA;
...
}
tsconfig.json:
{
"compilerOptions": {
"baseUrl": ".","lib": [
"es2016"
],"paths": {
"*": [
"src/*"
],"adapters/*": [
"src/adapters/*"
],"application/*": [
"src/application/*"
],},...
"declaration": true,"strict": true
},"include": [
"./src/**/*","./test/**/*"
],"exclude": [
"node_modules","dist"
]
}
在另一个项目中,公共项目是一个依赖项,我使用相同的命令构建
rm -rf dist && tsc --sourceMap -p ./ && cp tsconfig.json dist/ && cp .env dist/
它是用 import { ProjectCommon } from "@project/common";
导入的(vs 代码显示正确的路径 node_modules/@project/common/dist/src/index
)。
我可以在 node_modules/@project/common
中看到我的共同项目。
但是当我构建时出现此错误:
node_modules/@project/common/dist/src/adapters/api/repository.d.ts:1:37 - error TS2307: Cannot find module 'application/interfaces/interfaceA' or its corresponding type declarations. 1 import { InterfaceA } from "application/interfaces/interfaceA";
两个项目的文件结构相似,tsconfig路径相同,有影响吗? 我不应该在公共项目中使用路径,因为它必须作为库导入吗?
我尝试将一些路径更改为相对路径,但它没有解决构建错误。 公共项目中的路径绝对正确,这就是为什么当公共项目是依赖项时,我很惊讶地看到另一个项目在自己的构建过程中显示错误...
使用 ts-node -r tsconfig-paths/register --files ./src/index.ts
运行时:
` /home/projects/node_modules/@project/common/dist/src/index.d.ts:1 从“适配器/api/another.file”导入{类}; ^^^^^^^
语法错误:不能在模块外使用导入语句 `
使用这些命令和 tsconfig 一直工作得很好,直到我想通过发布到 npm 注册表来依赖 antoher。
期待一些见解:) 非常感谢
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。