vue3+ts+vite创建的项目-配置路径别名

5,368 阅读2分钟

在vue2+js+vue/cli的项目中,我们使用了一个插件Path Intellisense用于便捷的指定路径名,但是同样的方法并不适用于vite里面,参阅文档后进行整理

vue2+js+vue/cli 的‘@’符号路径简写配置

第一种使用插件的用法

步骤:

  • 安装vscode插件 Path Intellisense
  • 在vscode的设置中,找到setting.json文件,新增以下配置
 "path-intellisense.mappings": {
        "@": "${workspaceRoot}/src"
  }
  • 在项目根目录下新建配置文件jsconfig.json,进行以下配置
{
    "compilerOptions": {
        "target": "ES6",
        "module": "commonjs",
        "allowSyntheticDefaultImports": true,
        "baseUrl": "./",
        "paths": {
          "@/*": ["src/*"]
        }
    },
    "exclude": [
        "node_modules"
    ]
}
  • 配置好之后重启项目,重启项目一定要在根目录打开vscode
  • 配置完成之后的效果就是在导入任意文件的时候可以使用@符号代表根目录的src/的路径效果

image.png

第二种不使用插件

  • 找到vue.config.js文件,使用node.js自带的path,配置如下
const path = require('path');//引入path模块
function resolve(dir){
    return path.join(__dirname,dir)//path.join(__dirname)设置绝对路径
}


module.exports={
   
    chainWebpack:(config)=>{
        config.resolve.alias
        .set('@',resolve('./src'))
        .set('components',resolve('./src/components'))
        //set第一个参数:设置的别名,第二个参数:设置的路径
    
    }
}

vue3+ts+vite 的‘@’符号路径简写配置

步骤:

  • 无需安装插件,直接找到 vite.config.js/ts 文件,进行下面配置。路径别名如果单个的话alias后面写对象,多个的话写数组,里面再放对象。
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import * as path from 'path';
// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue()
  ],
  // 设置路径别名
  resolve: {
    alias: [
      {
        find: '@',
        replacement: path.resolve('./src')
      }
    ]
  }
})

image.png

  • 问题1:如果是TypeScript项目编写,还要修改一下TypeScript的配置。找到ts.config.json文件,进行以下配置:
{
    "compilerOptions": {
        "target": "esnext",
        "useDefineForClassFields": true,
        "module": "esnext",
        "moduleResolution": "node",
        "strict": true,
        "jsx": "preserve",
        "sourceMap": true,
        "resolveJsonModule": true,
        "esModuleInterop": true,
        "lib": ["esnext", "dom"],
        // 路径配置
        "baseUrl": ".",
        "paths": {
            "@/*": ["src/*"]
        }
    },
    "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
    "exclude": ["node_modules"],
    "references": [{ "path": "./tsconfig.node.json" }]
}

image.png

  • 问题2:vite1跟vite2版本不一样,如果是vite1的,那么要把外面的 resolve 取消掉,然后这里的__dirname就是绝对路径呗,也行吧
export default {
	alias: {
   		 '/@/': resolve(__dirname, 'src'),
    },
}
  • 问题3:如果是刚创建的TypeScript项目,有可能会出现 找不到模块“path”或其相应的类型声明 的错误提示,那么需要安装@type/node
yarn add @types/node 或者
npm i @types/node