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

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

zonemu1个月前 (07-26)技术文章19



在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"]
}

使用示例:

相关文章

费用管理系统(BMS)(费用管理系统的好处)

随着物流仓储行业的快速发展,费用管理系统的应用愈发重要。BMS系统不仅简化了报价与结算流程,还降低了管理成本,提升了效率。本文深入探讨了海外仓BMS系统的功能与应用,展示了其在费用管理中的重要作用,为...

Jenkins 学习笔记(jenkins要学多久)

本学习笔记参考《Jenkins 2.x实践指南》。1. Jenkins 简介#Jenkins 是一款自动化的任务执行工具。通常用于持续集成/持续交付领域。可以通过界面或Jenkinsfile告诉Jen...

HTML5培训的学习大纲

第一阶段前端开发基础:1.HTML标签语言(xhtml+html5)行业介绍,本地环境配置,sublime编辑器学习使用,制作html标准模板,css基础,html常用标签(一),html常用标签(二...

育知HTML5培训,为什么要学习“HTML5混合式开发技术”

HTML5 的广泛应用,强势崛起企业现在安卓、iOS开发人员都在学习HTML5混合开发,节约成本、一专多能是未来很多企业用人趋势!HTML5工程师在今后的工作中与 Android、iOS工程师对接的几...

解锁无限潜力,在没有数组溢出情况下,掌握Filter公式正确用法

嗨,朋友们!今天我要和大家分享一些关于Filter公式的知识,这将帮助你们解决没有数组溢出情况下的问题。你是否曾经在处理数据时遇到过没有数组溢出的情况?不用担心,因为我将教你一些正确使用Filter公...

2021系列——JavaScript比较数组的7种方法

本文我会介绍一些基于Property值对数组进行排序的方法,希望这些技巧能够对你2021年的JS代码编写有点点帮助。多多少少在JS中,我们会碰到某种方式来比较两个对象数组并找出差异,当然也可能是比较并...