React项目中配置路径别名@的问题

在VSCode中,通过配置tsconfig.json的baseUrl和paths来支持Ctrl跳转到@指定路由。然而,这并不影响项目启动。文章推荐使用craco和调整webpack的alias配置,以及修改package.json中的启动命令,以实现路径别名。重启VSCode和yarnstart后,路径别名设置成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先,很蛋疼,碰到这个问题,在vscode中使用ctrl可以点击跳转到@指定的路由,也没报错

因为我在tsconfig.json里面已经配置了

"compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*":["src/*"]
    }
}

但是最重要的一点,这个东西,它并不是启动项目时候用的,我们应该改变启动项目的方式

这里我推荐安装 craco ,yarn add @craco/craco -D 并配置如下

const path = require('path')

module.exports = {
  webpack :{
    alias:{
      "@":path.resolve(__dirname,'src'),
    }
  }
}

说到这,我项目其实也配置了这个东西,但是还有一步,改变项目启动的方式,在package.json里面我们需要去改变几条命令

ok,到这里关闭vscode,再打开,重启yarn  start 你的路径别名就设置成功了

 

### 如何在 React 18 中配置 Webpack 路径别名 为了简化模块导入路径,在 React 18 项目中可以通过 Craco (Create React App Configuration Override) 来实现 Webpack 别名配置。以下是具体方法: #### 安装依赖包 首先,安装 `@craco/craco` 工具来覆盖默认的 Create React App 配置。 ```bash npm install @craco/craco --save-dev ``` #### 创建并编辑 craco.config.js 文件 接着,在项目的根目录下创建名为 `craco.config.js` 的文件,并加入如下代码片段用于定义别名映射关系[^1]。 ```javascript const path = require('path'); module.exports = { webpack: { alias: { '@': path.resolve(__dirname, 'src'), '@assets': path.resolve(__dirname, 'src/assets'), '@components': path.resolve(__dirname, 'src/components'), '@views': path.resolve(__dirname, 'src/views'), '@apis': path.resolve(__dirname, 'src/services/apis/index.js') } } }; ``` 此段脚本通过设置绝对路径的方式指定了多个自定义前缀(`@`, `@assets`, etc.)所对应的源码位置[^3]。 #### 修改 package.json 启动命令 最后一步是在 `package.json` 文件内的 scripts 字段里更新启动指令以使用 Craco 替代原生 CRA 命令: ```json "scripts": { "start": "craco start", "build": "craco build", "test": "craco test" } ``` 这样做的目的是让应用程序能够识别新的构建工具链配置选项[^2]。 #### 设置 VSCode 提示支持 为了让开发环境更好地理解这些新设定的路径别名,在项目根目录添加或修改现有的 `jsconfig.json` 文件,确保其内容如下所示以便于 IDE 或者编辑器可以解析别名规则[^4]: ```json { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["src/*"] } } } ``` 完成上述操作之后,重启开发服务器即可生效新的路径别名机制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值