vscode 引用路径的别名设置

2023-11-10

问题描述

​ 在开发过程中,由于模块越来越多,需要建立的文件夹就会越来越多,目录层级越来越深。这样就会导致import引用时极不方便,比如说:

引用过长示例

​ 如果在开发过程中能够使用某别名来指代根目录或src文件夹(开发过程中引用的文件一般都在src下),达到下图的效果,是最好不过的了(程序员一般都是有强迫症的,可能要达到目的写的代码要远远大于这几个.,虽然可以达到目的,但是太难看了)。
别名路径

解决过程

  • 更改weboack.base.config.js文件

​ 去网上查阅了资料之后,发现可以通过更改weboack.base.config.js中的resolve.alias来达到目的。

module.exports = {
	···
    ···
  resolve: {
    extensions: ['.js', '.vue', '.json'],
    alias: {
      '@': resolve('src'),
    }
  }
  ···
  ···
}

​ 这样就可以使用@来指代./src文件夹,同样,也可以在alias对象中继续添加其他路径的别名。

然而问题没有这么简单…

​ 当初为了方便,我是使用craete-react-app脚手架来搭建的工程,在不想使用react-scripts eject来显示webpackage等的配置文件的情况下(那样会破坏目录结构,并且是不可逆的),只能另寻其他方法。。。

  • 使用customize-cra来定制配置

​ 之前使用高阶组件less等配置时,引入了customize-cra并创建了./config-overrides.js来定制webpackage的一些属性。使用这一方法,同样可以配置路径别名:

const { addWebpackAlias } = require('customize-cra')
module.exports = override(
  ···
  ···
  addWebpackAlias({
    ['@']:require('path').resolve(__dirname, 'src')
  })
  ···
  ···
)

​ 经过上述配置,终于可以在文件中使用@来代替巨长无比的路径了!
别名路径

然而,使用别名替代后,vscode不再能智能提示来补全路径了(我就知道没这么简单)。。。

  • vscode的路径智能提示功能

​ 后来查到了一个vscode官方提供的方法:通过自定义jsconfig.json文件来重新激活相应的路径智能提示。在项目根目录下,新建一个jsconfig.json文件,内容如下(大神是这么说的):

{
  "compilerOptions": {
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    },
    "target": "ES6",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

​ 但是,做了如上配置之后,编译报错。。。

路径修改报错

​ 根据错误提示,将baseUrl做出对应的修改即可:

{
  "compilerOptions": {
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "baseUrl": "src",
    "paths": {
      "@/*": ["*"]
    },
    "target": "ES6",
    "module": "commonjs",
    "allowSyntheticDefaultImports": true
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"]
}

然而,然而,再次然而。。。还是存在问题。。。

​ 经过上述设置,路径补全功能实现了,但是补全的文件夹下面文件补全功能有bug,目前只能自动提示*.js 文件,图片、css等文件不会提示。。。

路径补全bug

  • 解决路径补全不提示文件的bug

​ 不再使用jsconfig.js,使用vscode插件来实现路径补全:

​ 这里选择的是Path Autocomplete插件,而不是Path Intellisense(之前使用的这一个,但是关于别名路径方面还是存在问题。。。)

​ 在 工作区配置 .vscode/setting.json里面添加内容如下:

{
  "path-autocomplete.excludedItems": {
    "**/*.js": { "when": "**/*.ts" }, // ignore js files if i'm inside a ts file
    "**/*.map": { "when": "**" }, // always ignore *.map files
    "**/{.git,node_modules}": { "when": "**" } // always ignore .git and node_modules folders
  },
  "path-autocomplete.pathMappings": {
    "@": "${folder}/src"
  },
}

​ 在path-autocomplete.pathMappings对象中配置别名对应的路径,即可实现别名下的路径补全,而且不只js文件会补全,其他文件也会。

路径补全bug修复

​ 关于文件的后缀,Path Autocomplete默认是不自动添加文件后缀的,可以通过在系统的配置文件里面(如果只想当前项目生效就在当前工作区的配置文件里面)设置"path-autocomplete.extensionOnImport": true。即可自动添加文件后缀。其他的设置见下图:

path-autocomplete_Setting


就这样,因为路径过长而想用别名代替所引起的一系列问题就解决了(我还要更改代码里对应的路径)。。。

参考资料:

vue 用别名取代路径引用
解决vscode使用了@别名后路径不提示的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vscode 引用路径的别名设置 的相关文章

随机推荐

  • 【Qt Quick】用Qt编辑器书写C++项目、解决输出中文问题

    系统 Win10 IDE Qt 1 简介 我想直接用qt的编辑器写c 的项目 不再重新下载vs2019等 2 创建项目 创建好以后 默认会有如下代码 include
  • JDK源码汇总

    JDK源码汇总 持续更新中 Appendable
  • 关于Android中的api、implementation、compile理解

    1 compile在3 0及以上的gradle版本已弃用 2 api可以完全代替compile 利用api导入的包可以被下级引用 3 implementation只是编译时引用 并不把引入的包打包进项目 4 java library项目依然
  • 操作系统真象还原实验记录之实验十五:多线程调度

    操作系统真象还原实验记录之实验十五 多线程调度 对应书P428 9 4节 1 相关基础知识 2 实验记录 2 1 实验流程 上次实验中 实现了一个线程的运行 具体是 1 申请了一页物理页作为PCB 2 init thread填写了位于PCB
  • 攻防世界--MISC题之坚持60s

    问题描述 难度系数 四颗星 题目来源 08067CTF 题目描述 菜狗发现最近菜猫不爱理他 反而迷上了菜鸡 题目场景 暂无 题目附件 附件1 题目分析 文件是一个jar文件 于是就想到了java 其实 在我看来 它就是一个压缩包 所以 大致
  • ROS 学习笔记(一)

    前言 最近在学习ros 为毕设作准备 和师兄交流过 想了想还是先把A 的路径规划给做完 然后在去做动态无限充电的实验好了 目前学习的视频还是经典中的经典 古月ros21讲 这个看完之后再去看师兄推荐的文章 vscode开发ROS1 3 创建
  • 【板子】 0-1背包问题 一维数组

    0 1背包问题 有 N 件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i 件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N
  • C语言之生肖、年龄、星座查询

    程序实现输入年月日 输出星座生肖年龄 代码实现 include
  • chatgpt赋能python:Python如何随机生成26个字母

    Python如何随机生成26个字母 Python是一种流行的编程语言 被广泛用于数据分析 人工智能和Web开发等领域 Python中有很多库可以用于随机生成字符 包括Python内置的random库和第三方库string 在本文中 我们将介
  • GetCurrentDirectory和SetCurrentDirectory

    GetCurrentDirectory和SetCurrentDirectory是获取和设置的线程的当前工作路径 而不是线程所在路径 下面的代码是源文件所在路径下有一个文件为write txt 而上一级路径下没有这个文件 来说明这两个函数的功
  • 获取宝塔Linux面板登陆地址账号和密码

    在ssh终端输入 etc init d bt default
  • vs中出现bug error C1083:无法打开文件

    被自己的愚蠢惊呆了 这个bug是我自己手动造成的 编译的时候出现下面的情况 解决办法 找到项目 属性 C C 常规 然后就是直接 加上这句 GeneratedFiles 如图 成功解决这个问题
  • c++代码的编译

    1 gcc和g 1 1搞清楚几个名字 GCC GNU Compiler Collection GUN编译套件 可以编译c c java objective c Fortran等语言 gcc GCC中的 GUN C Compiler C 编译
  • GCC学习

    GCC的学习 图片来源于牛客项目课程 备注 1 默认Ubuntu 没有安装GCC 安装需要一定时间 2 gcc编译c文件 g 编译c 文件 3 ctrl l 清空命令行 gcc 介绍 优点 跨平台 支持 多软件平台和硬件平台 软件平台支持
  • KEIL编译器设置RAM数据复位后不被初始化数据

    第一种 编译器设置 这样设置RAM2 前提是你的RAM空间要有0x8200的大小 我只是举一个例子 在用at指定空间就可以了 比如 unsigned char APP MAC 6 attribute at 0x20008000 这样只要不带
  • 多线程编程之二——MFC中的多线程开发

    五 MFC对多线程编程的支持 MFC中有两类线程 分别称之为工作者线程和用户界面线程 二者的主要区别在于工作者线程没有消息循环 而用户界面线程有自己的消息队列和消息循环 工作者线程没有消息机制 通常用来执行后台计算和维护任务 如冗长的计算过
  • Leetcode详解JAVA版

    目录 1 两数之和 14 最长公共前缀 15 三数之和 18 四数之和 19 删除链表的倒数第 N 个结点 21 合并两个有序链表 28 找出字符串中第一个匹配项的下标 36 有效的数独 42 接雨水 43 字符串相乘 45 跳跃游戏 II
  • 五色球搭配

    要求 共有五种不同颜色的小球 每次取出三个不同颜色的小球 求出所有取球方案 include
  • 小明和小红学习都很努力,一直不相上下。这次期末考试,都发挥得不错,考出了自己的水平。请你判断下这次谁考的更好呢?

    题目描述 小明和小红学习都很努力 一直不相上下 这次期末考试 都发挥得不错 考出了自己的水平 请你判断下这次谁考的更好呢 输入 仅一行 两个不相等的整数 都大于等于0 且小于等于100 表示两人的成绩 输出 仅一行 一个整数 表示考得好的成
  • vscode 引用路径的别名设置

    问题描述 在开发过程中 由于模块越来越多 需要建立的文件夹就会越来越多 目录层级越来越深 这样就会导致import引用时极不方便 比如说 如果在开发过程中能够使用某别名来指代根目录或src文件夹 开发过程中引用的文件一般都在src下 达到下