我使用的是create-react-app
+ typescript,我想添加绝对路径。
我试着使用绝对路径,就像这样:
而不是import x from '../../../components/shell/shell'
使用import x from '@components/shell/shell'
;
下面是tsconfig.json文件:
{
"extends": "./paths.json",
"compilerOptions": {
"target": "es5",
"lib": [
"dom",
"dom.iterable",
"esnext"
],
"allowJs": true,
"baseUrl": "src",
"skipLibCheck": true,
"esModuleInterop": true,
"allowSyntheticDefaultImports": true,
"strict": true,
"forceConsistentCasingInFileNames": true,
"module": "esnext",
"moduleResolution": "node",
"resolveJsonModule": true,
"isolatedModules": true,
"noEmit": true,
"jsx": "react"
},
"include": [
"src"
]
}
我使用扩展文件作为路径,因为出于某种原因,npm start
覆盖了文件。因此是paths.jsonfile:
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@": ["./src"],
"@components/*": ["components/*]"
}
}
}
我还有一个**.env**文件:
NODE_PATH=src
我安装了react-app-rewire
,这样我就可以配置路径,我的 * config-ovverrides.js * 文件看起来像这样:
module.exports = {
paths: function(paths, env) {
// ...add your paths config
return paths;
}
};
我坚持连接所有的点,它不工作,我仍然看不到我需要做什么,以配置webpack路径对象;
如何在cra、ts和rewire中实现路径?
3条答案
按热度按时间vltsax251#
您可以使用5个简单步骤解决此问题,而无需弹出:
第1步:将react-app-rewired添加到您的
devDependencies
中。yarn add -D react-app-rewired
或npm intall react-app-rewired --save-dev
第2步:安装后,您可以将
package.json
默认ReactsJS脚本更改为:第3步:在根路径上创建一个名为
tsconfig.paths.json
的新文件,其内容如下:提示1:您可以选择要使用的路径,例如:
@services, @interface, @src, ~, @, etc
,只需更改"paths": {}
中的键即可这同样适用于它的值:
["src/shared/services/*"], ["src/shared/interfaces/*"], ["src/*"]
,请在此处使用相对路径。第4步:在
"compilerOptions"
之前,您需要扩展刚刚创建的tsconfig.paths.json
。就像这样:
第5步:创建一个新文件
config-overrides.js
,在其中添加别名和相对路径:提示2:如果您使用的是
**eslint**
,请记住要有一个.eslintignore
文件,并在其中添加config-overrides.js
。重新启动IDE或文本编辑器,在我的例子中是VSCode。
**完成!**现在只需运行
yarn start
或npm run start
oug3syen2#
是否需要使用
@
语法?您是否能够使用以下语法:
?
如果是,请参阅CRA Absolute Imports的文档。
对于Typescript,您的
tsconfig.json
变为:开箱即用,这将允许您导入
src
作为基目录。因此,您的语法变为:
这将是摩擦力最小的选择...
可是......
如果你绝对需要
@
语法,那么要让rewire正确工作就需要多一点小技巧。我发现的唯一让rewire使用该语法的方法是包括一个webpack别名重写。因此,流程如下(请根据应用程序的需要更新路径):
1.在您的
tsconfig.json
旁边创建一个tsconfig.paths.json
,其中包含:1.使用
extend
更新您的tsconfig.json
:运行build命令(
npm run build
)时,脚本将抛出以下错误:extend选项可以缓解这种情况。
1.将Web包别名添加到
config-overrides.js
:这个例子使用了包
customize-cra
,它有一堆有用的解析器用于覆盖。(如果你不想使用它,那么你需要在传递给override
函数的config
对象上设置config.resolve.alias
属性)现在,假设您已经将所有脚本更新为使用
react-app-rewired
,您应该能够使用以下语法:qaxu7uf23#
不再支持路径别名
但是,现在您可以执行此操作,直接导入与
src
目录相关的文件转到
tsconfig.json
文件,将baseUrl
添加为"."
那么你可以直接从
src
目录导入东西"这对我有用"