2021 年的解决方案。
注意:CRA。最初使用第三方库或弹出应用程序别名的想法对我来说似乎很疯狂。然而,经过 8 个小时的搜索(并尝试了带有弹出的变体),结果证明这个选项是最不痛苦的。
第 1 步。
yarn add --dev react-app-rewired react-app-rewire-alias
第 2 步。
在项目的根目录中创建 config-overrides.js 文件并使用:
const {alias} = require('react-app-rewire-alias')
module.exports = function override(config) {
return alias({
assets: './src/assets',
'@components': './src/components',
})(config)
}
第 3 步。修复您的 package.json 文件:
"scripts": {
- "start": "react-scripts start",
+ "start": "react-app-rewired start",
- "build": "react-scripts build",
+ "build": "react-app-rewired build",
- "test": "react-scripts test",
+ "test": "react-app-rewired test",
"eject": "react-scripts eject"
}
如果@declarations 不起作用,请将它们添加到 d.ts 文件中。
例如:
'@constants': './src/constants', => 添加 react-app-env.d.ts declare module '@constants';
就是这样。现在你可以像往常一样继续使用 yarn 或 npm start/build/test 命令了。
Full version in docs.
注意:文档中的 “与 ts / js 配置一起使用” 部分对我不起作用。构建项目时的错误“不支持别名导入”仍然存在。所以我用了一种更简单的方法。幸运的是它有效。