1. 配置webpack别名有什么用?
- 设置别名可以让后续引用的地方减少路径的复杂度,如
../../src/pages/a.tsx 就可以写为 @/pages/a.tsx
2. 要配置哪些东西?
- 先简单说明一下,需要配置3个地方,分别是:
- 配置
webpack 别名,否则项目会无法启动及打包
- 配置
tsconfig 别名,否则无法通过 typescript 静态检查
- 配置
Eslint 别名,否则无法通过 Eslint 语法检查
3. 如何配置
1. 安装需要的依赖
yarn add -D react-app-rewired
yarn add -D eslint-import-resolver-alias
2. 配置 webpack ,让 webpack 认识你配置的别名
- 新建
config-overrides.js 文件来覆写webpack配置
const path = require('path')
function resolve(dir) {
return path.join(__dirname, '.', dir)
}
module.exports = function override(config, env) {
config.resolve.alias = {
...config.resolve.alias,
'@': resolve('./src'),
};
return config;
}
- 修改
package.json 启动参数,使用 react-app-rewired 启动项目
{
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test"
}
}
- 配置
.eslintignore 忽略 config-overrides.js 文件
config-overrides.js
4. 配置 TS ,让 typescript 认识你配置的别名
- 新建
tsconfig.paths.json 文件,配置别名
{
"compilerOptions": {
"baseUrl": "./src",
"paths": {
"@/*": ["./*"]
}
}
}
- 在
tsconfig.js 中引入 tsconfig.paths.json
{
"extends": "./tsconfig.paths.json",
}
- 修改
Eslint 配置文件,让 Eslint 认识你配置的别名
module.exports = {
settings: {
'import/resolver': {
alias: {
map: [
['@', './src']
],
extensions: ['.js', '.ts', 'tsx', '.json']
}
}
},
};