我使用npm link
来引用我在我的测试项目中开发的打字稿库
这意味着我的node_modules看起来像这样:
node_modules/
| myLib/
| | dist/
| | | subModule/
| | | | index.js
| | | | index.d.ts
| | | index.js
| | | index.d.ts
| | node_modules/
| | src/
| | tsconfig.json
| | package.json
这意味着当我尝试使用import X from "myLib"
引用我的库时,我必须告诉编译器源是在/ dist forlder中,而不是myLib的根。
我通过添加" main":" ./ dist / index.js"解决了这个问题。在myLib的package.json中
问题是当我尝试导入相对于myLib的路径时
与import Y from "myLib/subModule"
这一次它没有用。
因为而不是查看node_modules/myLib/dist/subModule
tsc正在查看不存在的node_modules/myLib/subModules/dist/
。
如何让编译器查看子模块的正确路径?
答案 0 :(得分:1)
您可以使用tsconfig.json
中的"paths"
key in the "compilerOptions"
解决此问题。像这样:
{
"compilerOptions": {
"paths": {
"myLib/*": "node_modules/myLib/dist/*"
}
}
}
可悲的是,这是一个standing issue,当"types"
中有package.json
键时,TypeScript编译器如何解析定义文件。