配置React项目@路径别名及智能提示方案

WIFI和BT测试(射频工程师) 买不了吃亏买不了上当,我卖的是技能,你收获的是经验。 阅读详情
AI摘要

文章介绍了如何在React项目中使用create-react-app(CRA)时,通过自定义配置实现别名引入,包括修改Webpack配置、使用craco插件以及解决VSCode智能提示问题的方法。

目录


前言

在日常项目开发时,相信你也往往会碰到引入文件很麻烦的困扰,通常编辑器是支持 './' 与 '../' 去引入的,但是通常会选择通过@别名的方式去引入,使得项目更加清晰明了

而通过命令:

npx create-react-app

创建的react脚手架项目中,并不支持通过别名的形式去引入文件


以下通过有上面命令创建的项目为例,讲解如何配置@

一、自定义 CRA 的默认配置

  • CRA 将所有的工程化配置,都隐藏在了 node_modules\react-scripts\ 包中,所有在react项目中看不到任何配置文件信息,不想vue脚手架创建出的项目中含有 vue.config.js 等配置文件
  • 自定义修改CRA 默认配置,方案:
  1. 通过第三方库修改,如:@craco/craco (安装时看自己需要的环境是生产或开发)
  2. 通过执行 pnpm eject 命令,释放 react-scripts 中的所有配置到项目中

二、通过修改 CRA 默认的工程化配置

1.实现步骤

  • 在项目中,打开依赖 node_modules文件夹
  • 找到 react-scripts 文件夹
  • 打开 config 文件夹进入 webpack.config.js 文件,搜索 ailas属性,添加 "@" : path.resovle('src') 代码 即可

三、使用 craco库 来自定义CRA配置 (推荐)

1.实现步骤

  • 安装:pnpm add -D @craco/craco (如生产上需要最好安装在dependencies中)
  • 在项目的根目录下创建craco的配置文件:craco.config.js,并在配置文件中配置别名
  • 修改 package.json 文件中的脚本命令
  • 重启项目,即可生效使用别名引入

2.代码实现

  • 在 carco.config.js 文件中
// 通过 craco插件 修改create-react-app 创建的脚手架webpack
const path = require("path");

module.exports = {
  // webpack 配置
  webpack: {
    alias: {
      // 约定
      "@": path.resolve(__dirname, "src"),
    },
  },
};
  • 在 packge.json 文件中将以下代码:
"scripts": {
    "start": "react-scripts start"
    "build": "react-scripts build"
    "test": "react-scripts test"
}

修改成:

 "scripts": {
    "start": "craco start",
    "build": "craco build",
    "test": "craco test",
    "eject": "react-scripts eject"
  },

此时,在项目中便可以使用 @ 代替 '*/src' 路径,但会发现vscode不会智能的提示

3. 解决智能提示问题

  • 方案一:path-alias插件

    VsCode的插件生态非常丰富,在插件商场搜索path-alias插件进行下载,该插件可以更好的帮助我们路径智能提示

    相关配置:该插件只默认配置路径@映射到项目的src目录中,如需其他别名设置,需要进入VsCode的 setting.json 文件中配置:

  • // 开发项目时使用路径别名时会有"智能提示" 
    "pathAlias.aliasMap": {
      // key是你要定义的别名 | 使用${cwd}来代替当前工作目录的绝对路径
      "@": "${cwd}/src",
      "~": "${cwd}/src",
      "components": "${cwd}/src/components"
    },
    

    此时,重启即可生效,优点:配置一次终身生效,缺点:耗内存,如果内存不足的话可以选择以下方案

  • 方案二:jsconfig.json 文件

    • 在项目的根目录下新建:jsconfig.json 文件

    • 输入如下代码配置:

      {
        "compilerOptions": {
          "emitDecoratorMetadata": true,
          "experimentalDecorators": true,
          "baseUrl": ".",
          "paths": {
            "@/*": ["./src/*"]
          }
        },
        "exclude": ["node_modules", "dist"]
      }
      

      此时,重启即可生效,优点:需要的内存小,缺点:每次新项目都需要配置

总结:

以上便是对项目中别名的相关设置,按照需要操作即可

请尽可能地详细说明一个VLA项目的立项训练到落地的全流程 一个机器人VLA项目的全流程是一个复杂的系统工程,它深度融合了机器人学 (Robotics)计算机视觉 (CV)和自然语言处理 (NLP)。其核心挑战在于高质量数据的获取和从仿真到现实的有效迁移。与纯粹的软件AI项目相比,它增加了硬件、物理交互和安全性的维度,但其最终能让AI走出虚拟世界、在物理世界中产生实际价值,这也是其巨大的魅力所在。 阅读详情

相关推荐

RTDETR多模态融合实战:基于注意力机制的红外与可见光目标检测优化

本文深入探讨了基于RTDETR模型的红外与可见光多模态目标检测优化方案。针对复杂光照下的检测难题,文章提出并实战演示了如何利用注意力机制(如SimAM与交叉注意力)实现RGB与IR特征的智能动态融合,从而构建更鲁棒的“全天候”检测系统,有效提升安防、自动驾驶等场景在夜间及恶劣天气下的检测精度与可靠性。

weixin_29083373的博客 188

React-配置别名@

React项目中,配置别名@通常用于简化和统一管理项目路径。

m0_62785037的博客 803

F5高可用HA配置详情

F5 HA详细配置

weixin_45843944的博客 3022

React中配置@

React中配置@

haodanzj的博客 1225

RTKLIB中RTK定位原理(一)

1 模型 1.1 非差观测值 非差观测值与RTKLIB中PPP定位原理——观测模型部分中一致。 1.2 单间单差观测值 若两个接收机距离较近,经过站间单差,电离层对流层延迟可消除,卫星s的钟差以及初始相位被消除,中依然包含接收机初始相位。 1.3 站间星间双差观测值 经过站间星间双差,接收机钟差及初始相位被消除。 2 EKF参数估计 2.1 EKF法则 EKF法则与RTKLIB中PPP定位原理——观测模型部分中一致。 2.2 状态变量与时间更新 (1)状态变量 在RTK...

papunzal的博客 3811

在Windows11下安装完Ubuntu20.04双系统后配置环境的过程

在Windows11下安装完Ubuntu20.04双系统后配置环境的过程 1.NVIDIA驱动检测及安装 2.Anaconda的安装 3.安装cuda、cudnn、pytorch 4.其他报错

aaaccc444的博客 2423

React项目中配置@符号

在 React 项目中配置符号,通常是为了简化路径引入时的书写。

xxq_0217的博客 1442

LLC混合滞回控制 vs 电压模/电流模:UCC25640x仿真对比与选型指南

在开关电源设计中,LLC谐振变换器的环路补偿是核心难点。传统电压模控制(VMC)和电流模控制(CMC)在LLC拓扑上存在环路增益漂移、动态响应慢等局限。混合滞回控制通过滞回比较器直接调制开关频率,并融合输出电压与谐振腔电流信息,实现了自适应环路增益和快速瞬态响应。该技术显著提升轻载效率与动态性能,适用于高密度适配器、快充及车载充电机等场景。本文基于UCC25640x系列,通过仿真对比三种控制策略,为工程选型与调试提供实践参考。

weixin_33925615的博客 333

React项目、TS+React项目配置别名(alias)

普通React项目配置别名 + (TS&React)项目配置别名

qq_44212319的博客 2214

Coze智能体开发:扣子空间制作PPT功能

扣子空间内置了丰富的场景模板,涵盖人文历史、学术分享、研究报告、数据分析等场景,可以满足不同用户的需求。 你只需输入与制作 PPT 相关的提示词,Agent 就能基于这些提示词展示思考的过程,并自动生成完整的 PPT。

王国平的博客 2052

PCL 八叉树的使用

八叉树(Octree)是一种空间划分的数据结构,广泛应用于三维点云的处理和分析。八叉树通过将空间递归地划分为八个子区域,可以有效地组织和索引三维点数据,提升点云的查询、降采样和配准等操作的效率。

纵马踏花向自由 1658

React 配置别名 @ ( js/ts 项目中通过 webpack.config.js 配置)

在Vue项目当中,可以使用来表示src/,但在React项目中,默认却没有该功能,因此需要进行手动的配置来实现该功能。别名主要解决的问题:每个页面都使用路径的方式进行引入,这样很麻烦,效率很低,这个时候可以配置一个别名,来直接使用别名引入。使用可以在不释放React隐藏配置()的情况下就能配置好别名,参考文章。

卡尔特斯 1578

滤波电路Multisim电路仿真实验汇总——硬件工程师笔记

本文系统介绍了滤波电路的基础知识及其应用。首先按频率选择性和实现方式对滤波电路进行分类,详细阐述了低通、高通、带通、带阻滤波器以及无源、有源滤波器的特点。接着重点分析了桥式整流电容滤波、电感滤波、LC滤波和CRπ型滤波四种典型电路的工作原理、应用场景及设计要点。通过理论公式和实际案例,指导如何选择滤波元件参数,考虑寄生效应,并通过仿真验证设计效果。最后提供了硬件工程师笔试面试相关的技术资源链接,包括器件知识、电路仿真及企业真题解析等内容。本文可作为电子电路设计领域工程技术人员的学习参考资料。

XU157303764的博客 2166

Vue或React项目配置@路径别名及智能提示方案

如果想一次配置且不在乎占用内存情况,建议直接使用path-alias插件如果本机内存不够或觉得这个插件使用体验不佳, 建议使用。

Coding and studying 2119

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

React import 配置路径别名‘@’,简化import Component的方式

摘要 在react中,大多数业务逻辑都组件化;极大的减轻了代码的冗余度,如果组件的层次比较深的话,组件的import就比较费劲,在import时使用“…/…/components/test”的方式,组件的import就会稍显混乱、组件代码不容易维护。为了可高效的、快速的维护组件代码,废弃“…/…/”的组件引入方式,配置一个组件路径重写的方式引入组件。 配置内容 我在之前就介绍过在react中引入less的配置,同样的为了配置一个路径别名,使用customize-cra来覆写webpack底层配置。(配

Cole31415的博客 7134

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

开发Vue或React项目时路径别名智能提示方案

开发Vue或React项目时路径别名智能提示方案 前言 在我们开发Vue或React项目时,每次配置完路径别名,在输入路径时都没有对应的智能提示路径,如何解决这个痛点呢? 笔者通常都是使用vscode,本次使用vscode来进行演示解决,非常简单的 方案一: path-alias插件 俗话说的好「工欲善其事,必先利其器」那么有没有一种插件能让我们不同的项目中每次在输入路径别名时时,有相关的路径提示呢? 答案是:当然有的,而且几乎零配置哦,下面让我们来看下面???? 未安装效果 没有路径别名智能提示

weixin_44763882的博客 1449

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

@component 别名_开发Vue或React项目时路径别名智能提示方案

前言在我们开发Vue或React项目时,每次配置完路径别名,在输入路径时都没有对应的智能提示路径,如何解决这个痛点呢?笔者通常都是使用vscode,本次使用vscode来进行演示解决,非常简单的方案一: path-alias插件俗话说的好「工欲善其事,必先利其器」那么有没有一种插件能让我们不同的项目中每次在输入路径别名时时,有相关的路径提示呢?答案是:当然有的,而且几乎零配置哦,下面让我们来看下面...

weixin_35161750的博客 716

React配置别名路径完整指南

React项目中的别名路径(Path Alias)可以简化复杂文件结构的导入方式。通过配置jsconfig.json或构建工具(如Vite、Next.js)的别名映射,将冗长的相对路径(../../../components)转换为简洁的绝对路径(@/components)。主要实现方式包括:CRA项目用jsconfig.json或CRACO配置路径映射,Vite/Next.js项目在配置文件中设置resolve.alias。使用别名能提升代码可读性、减少重构风险,建议配合VSCode路径智能提示插件使用。

hello! 1167

React-别名路径配置

在中,别名路径配置(Alias Path Configuration)是一种通过配置工具或框架,将特定的路径别名映射到实际文件路径的方法。这样可以简化文件引用路径,提高代码的可读性和维护性。

m0_68716504的博客 628

unity vscode没有智能提示_开发Vue或React项目时路径别名智能提示方案

前言在我们开发Vue或React项目时,每次配置完路径别名,在输入路径时都没有对应的智能提示路径,如何解决这个痛点呢?笔者通常都是使用vscode,本次使用vscode来进行演示解决,非常简单的方案一: path-alias插件俗话说的好「工欲善其事,必先利其器」那么有没有一种插件能让我们不同的项目中每次在输入路径别名时时,有相关的路径提示呢?答案是:当然有的,而且几乎零配置哦,下面让我们来看下面...

weixin_39966130的博客 330

React + TypeScript+ Vite 配置路径别名和vscode智能路径提示

在根目录下的 vite.config.ts 文件中配置如下代码,就可以使用路径别名了。此时可以正常启动项目,并正确使用路由了。但是还是会报警告,所以我们还需要配置 vscode 的智能路径提示配置。

z284747的博客 620

【React】配置别名路径@

【代码】【React】配置别名路径@

weixin_40874076的博客 685

vscode智能提示c_webpack添加路径别名后,vscode不能智能提示,如何解决?

为什么需要配置路径别名模块化开发项目中,比如vue和react等,经常需要import不同的js或者css模块到当前目录,那么如果路径比较深的话使用相对路径就比较麻烦,而且在文件迁移的时候,如果在不同的目录下边,又得改变以下引入的路径。所以我们可以使用webpack配置路径别名,在引入的时候我们直接使用这个别名,就可以正确的指向。如何配置在webpack.config.dev中的reso...

weixin_34616304的博客 745

react 使用 craco库 配置 @ 路径,以及 jsconfig.json或者tsconfig.json 配置智能提示

react 使用 craco库 配置 @ 路径,以及 jsconfig.json或者tsconfig.json 配置智能提示

帥潔的博客 2452

vite配置@别名,以及如何让vscode智能提示路经

【代码】vite配置@别名,以及如何让vscode智能提示路经。

qq_59517460的博客 709

@component 别名_React import配置路径别名'@',简化import Component的方式

前言在react中,大多数业务逻辑都组件化;极大的减轻了代码的冗余度,如果组件的层次比较深的话,组件的import就比较费劲,在import时使用“../../components/test”的方式,组件的import就会稍显混乱、组件代码不容易维护。为了可高效的、快速的维护组件代码,废弃“../../”的组件引入方式,配置一个组件路径重写的方式引入组件。配置内容我在之前就介绍过在rea...

weixin_34020067的博客 848
上一篇: 在react项目中 通过npm run build 打包后怎么运行浏览
下一篇: react报错Plugin “react“ was conflicted between “package.json » eslint-config-react-app »
酆都大帝-w
博客等级 码龄6年 19粉丝 13原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值