当前位置:首页 > 技术文章 > 正文内容

使用vite为vue项目配置@别名(vite-plugin-vue2)

zonemu3个月前 (07-26)技术文章36



在vue项目中,经常需要import自定义的模块,格式一般这样:

import request from '../utils/request'

如果目录层次比较深时,书写起来比较麻烦还容易出错。vite允许我们为项目src目录配置一个别名,方便调用,比如要导入一个路径为/src/view/user/info.ts的文件:

//假如已配置src目录的别名为@,则:
import info from '@/view/user/info'
//也可以为/src/view目录配置别名,比如@view,则:
import info from '@view/user/info'

怎么配置别名?

1、在项目根目录中找到vite.config.ts(TS项目)或vite.config.js(JS项目)文件。

打开对应文件后,添加以下代码:

//文件名称:vite.config.ts

//首先导入模块文件:
import {resolve} from 'path'

//然后在defineConfig中添加别名配置:
export default defineConfig({
  plugins: [vue()],
  //……其他代码等
  resolve: {
    extensions: ['.ts','.vue','.json','.js'],
    alias: {
        '@': resolve(__dirname, 'src'), //为src目录配置别名为@
        '@view': resolve(__dirname, 'src/view'), //示例,为src/view目录配置别名为@view
    }
  },

})

增加@和@view后就可以使用这两个别名引用对应的路径了。

当然,如果是TS项目,你可能会发现导入的path模块处提示有错误或“无法找到模块"path"的声明文件”等提示,不用急,只是因为node模块在ts中默认不支持类型声明,安装相关的依赖就可以了:

npm install @types/node --save-dev

2、为TS项目tsconfig.json添加配置

如果你是TS项目,安装相关的依赖后可能还是会发现在页面中使用别名导入时存在一些问题。比如路径名不被识别,输入路径@后不会智能显示路径信息等。

仔细看看项目目录下,是不是有tsconfig.node.json和tsconfig.app.json两个配置文件?如果有就对了(什么,没有?没有就自己编两个嘛,不保证有用,哈哈),打开它们,分别加入以下代码:

//tsconfig.node.json
{
  "compilerOptions": {
    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
    "target": "ES2023",
    "lib": ["ES2023"],
    "module": "ESNext",
    "skipLibCheck": true,
      /* 插入以下代码 */
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    },
       /* 其他不变 */
      ……
//tsconfig.app.json

{
  "extends": "@vue/tsconfig/tsconfig.dom.json",
  "compilerOptions": {
    "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
     /* 插入以下几行代码 */
    "baseUrl": ".",
    "paths": {
      "@/*": ["src/*"]
    },

    /* Linting */
    "strict": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "erasableSyntaxOnly": true,
    "noFallthroughCasesInSwitch": true,
    "noUncheckedSideEffectImports": true
  },
  "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"]
}

使用示例:

相关文章

10分钟搞定gitlab-ci自动化部署(gitlab ci 配置)

gitlab-ci 是持续集成工具/自动化部署工具,类似 jenkins。持续集成 是将代码集成到共享存储库并尽可能早地自动构建/测试每个更改的实践 - 通常一天几次。概述在编码完成时都会进行打包发布...

(在线编辑DWG)网页CAD二开实现焊接符号绘制

前言在工程制图和制造领域,焊接符号(Welding Symbols)是用于表示焊缝类型、尺寸、位置以及工艺要求的标准化图形语言。广泛应用于机械设计、钢结构、船舶制造、压力容器等行业中,帮助技术人员理解...

HTML5与APP的抉择(h5与app的区别)

同为当下炙手可热的技术,围绕APP和HTML5难免少不了各种争辩。而在“互联网+”时代,许多面临转型的传统企业,也在选择转型工具时,陷入了HTML5或APP的纠结抉择之中……到底该选择HTML5还是A...

js中数组filter方法的使用和实现(js实现数组的indexof方法)

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, se...

Excel中的FILTER函数详细介绍及使用示例

在Excel中处理大量数据时,经常需要根据特定条件筛选出符合条件的数据行或列。这正是Excel的FILTER函数发挥作用的地方。FILTER函数是Excel中一个非常强大的工具,它可以基于一个或多个条...

资深程序员是如何工作的?(资深程序员是什么意思)

最近在B站看到一个老外分享的一个资深程序员工作心得,他讲得很好,总结分享一下:1. 不懂就查资料,不需要面面俱到要点:编程不是记忆语言,而是理解模式和查找答案。资深开发者也常谷歌搜索。 重要性:消除“...