我正在阅读tsconfig中的路径映射。json,我想用它来避免使用以下丑陋的路径:
项目组织有点奇怪,因为我们有一个包含项目和库的单一存储库。项目按公司和浏览器/服务器/通用进行分组。
如何配置tsconfig中的路径?Json,而不是:
import { Something } from "../../../../../lib/src/[browser/server/universal]/...";
我可以使用:
import { Something } from "lib/src/[browser/server/universal]/...";
webpack配置中还需要其他东西吗?或者是tsconfig。json足够了吗?
如果你使用的是路径,在使用tsc将typescript编译成纯javascript后,你需要将绝对路径改回相对路径才能工作。
目前最流行的解决方案是tsconfig-paths。
我试过了,但对于我复杂的设置,它不适合我。
此外,它在运行时解析路径,这意味着包大小和解析性能方面的开销。
所以,我自己写了一个解,tscpaths。
我认为它总体上更好,因为它在编译时替换路径。这意味着没有运行时依赖关系或任何性能开销。使用起来非常简单。您只需要在package.json中的构建脚本中添加一行。
这个项目非常年轻,所以如果你的设置非常复杂,可能会有一些问题。
它完美地适用于我的设置,尽管我的设置相当复杂。
你可以结合使用baseUrl和路径文档。
假设根在最上面的src目录(我正确地阅读了你的图像)使用
// tsconfig.json
{
"compilerOptions": {
...
"baseUrl": ".",
"paths": {
"lib/*": [
"src/org/global/lib/*"
]
}
}
}
对于webpack,你可能还需要添加模块解析。对于webpack2,这可能是这样的
// webpack.config.js
module.exports = {
resolve: {
...
modules: [
...
'./src/org/global'
]
}
}
看起来React已经更新了,不允许你在tsconfig中设置“路径”。json anylonger。
nice React只输出一个警告:
The following changes are being made to your tsconfig.json file:
- compilerOptions.paths must not be set (aliased imports are not supported)
然后更新您的tsconfig。Json,并为您删除整个“路径”部分。有个办法可以绕过这条路
npm run eject
这将通过添加配置和脚本目录以及build/config文件到您的项目中,弹出所有的create-react-scripts设置。这也允许通过更新{project}/config/*文件来对所有内容的构建、命名等进行更多的控制。
然后更新tsconfig.json
{
"compilerOptions": {
"baseUrl": "./src",
{…}
"paths": {
"assets/*": [ "assets/*" ],
"styles/*": [ "styles/*" ]
}
},
}