mer*_*nop 7 typescript visual-studio-code next.js nrwl-nx
我遇到了使用nx和 VS Code引导的 Next.js 项目的问题:
当我尝试使用 VS Code 自动导入组件时,它将生成绝对导入,立即触发@nrwl/nx/enforce-module-boundaries
eslint 规则,使当前文件无效。
例如,文件夹结构:
apps/my-app/
pages/
entity/
new/
index.tsx
components/
Loading.tsx
Run Code Online (Sandbox Code Playgroud)
生成的导入将是:
// in my-app/pages/entity/new/index.tsx
import Loading from 'apps/my-app/components/Loading'
Run Code Online (Sandbox Code Playgroud)
虽然我期望:
import Loading from '../../../components/Loading'
Run Code Online (Sandbox Code Playgroud)
VS Code 有一个设置,始终使用相对路径进行导入,但这会阻止我以正确的方式导入库 ( @scope/lib
)。
是否有任何可能的设置可以使自动导入按预期工作?
小智 4
您可以在项目根目录下的文件中配置该paths
属性。tsconfig.base.json
如果将其添加到其他 tsconfig 文件中,它将不起作用,正确的文件是tsconfig.base.json
项目根目录下的文件。
离开您的示例,您可以将以下内容添加到选项中paths
。
"@my-app/*": ["apps/my-app/*"]
Run Code Online (Sandbox Code Playgroud)
现在您可以更改../../../components/Loading
为@my-app/components/Loading
.
tsconfig.base.json
更详细的示例(注意:为了便于阅读,我已经删除了文件中应包含的许多其他选项)
{
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@my-app/*": [
"apps/my-app/*"
]
}
}
Run Code Online (Sandbox Code Playgroud)
官方 TS 手册中的来源和更多信息:https://www.typescriptlang.org/docs/handbook/module-resolution.html#path-mapping
归档时间: |
|
查看次数: |
5916 次 |
最近记录: |