不妨试试vite-plugin-alias-import-checker来规范的你import~

背景

我们项目一般都会设置别名,比如项目结构为:

css 复制代码
├── src
│   ├── App.vue
│   ├── common
│   ├── components
│   ├── hooks
│   ├── index.css
│   ├── main.ts
│   └── shims-vue.d.ts
├── tsconfig.json
└── vite.config.ts

然后我们的一般会通过设置别名来更方便地引入:

ts 复制代码
export default defineConfig({
  resolve: {
    alias: {
      '@': resolve(__dirname, './src'),
      '@common': resolve(__dirname, './src/common'),
      '@hooks': resolve(__dirname, './src/hooks'),
    },
  }
})

但是一个项目往往是多人合作,会出现有些地方是用别名,有些地方又是通过相对路径来引入:

ts 复制代码
// hooks/useMounted.ts

import { foo } from '@common'
// or
import { foo } from '../common'

这样在强迫症的我看来,就显得相当的难受,所以我萌时了一个想法,能否通过实现一个 vite 插件,如果是当前 import 是在别名上下文(如在 @common)的路径下面,那么允许通过相对路径引入,而如果不是,就必须通过别名引入,否则警告甚至报错,类型下面这样:

最终,花费了我 5 个小时,从下午 6 点到晚上 12 点,终于实现并且开源了 👉vite-plugin-alias-import-checker,如果您感兴趣的话,那请看下面的介绍~

vite-plugin-alias-import-checker

🔥 Features

  • 支持不同文件 ------ 👉 .js, .jsx, .ts, .tsx, .vue, .svelte, and .astro
  • 支持错误级别,warn(你只想在控制台警告)或者 error(严格模式,一经检查到错误,则在页面上报错)

🔨 配置

首先,在你的 vite.config.ts 里面引入:

ts 复制代码
import { resolve } from 'node:path'
import { defineConfig } from 'vite'

import aliasImportChecker from 'vite-plugin-alias-import-checker'

const config = defineConfig({
  plugins: [
    aliasImportChecker(),

  ],
  resolve: {
    alias: {
      '@': resolve(__dirname, 'src'),
      '@common': resolve(__dirname, './src/common'),
      '@hooks': resolve(__dirname, './src/hooks'),
    },
  },
})

export default config

然后插件会通过读取的配置的 alias 来实现上述描述的功能。

更多例子可以查看 vue/vite.config.tsreact/vite.config.tsastro.config.mjs

效果:

vue-demo

react-demo

astro-demo

最后

如果您也是跟我一样的强迫症患者,推荐您尝试使用,如果有问题,请麻烦告诉我,如果您觉得不错,请不要吝啬 star✨,谢谢~

相关推荐
csdn_aspnet5 分钟前
javascript 算法 LeetCode 编号 70 - 爬楼梯
开发语言·javascript·算法·leetcode·ecmascript
swipe5 分钟前
DeepAgents 多 Agent 深度调研助手工程实战:从 createDeepAgent 到可控调研工作流
javascript·面试·langchain
星夜夏空9911 分钟前
FreeRTOS学习(7)——任务列表
java·前端·学习
moMo39 分钟前
JavaScript 变量提升,执行上下文里的各种门道
javascript·面试
weixin_4713830339 分钟前
由浅入深递归练习
前端·javascript·vue.js
tedcloud1231 小时前
ai-engineering-from-scratch部署教程:从零搭建AI应用环境
服务器·前端·人工智能·系统架构·edge
Kurisu5751 小时前
全面战争:战锤3修改器下载2026最新
前端
丷丩1 小时前
MapLibre GL JS第21课:绘制GeoJSON点图标、注记
前端·javascript·gis·mapbox·maplibre gl js
LCG元1 小时前
现代Web应用高可用架构设计与性能调优实战
前端·wpf
丷丩2 小时前
MapLibre GL JS第20课:更新GeoJSON多边形
前端·javascript·gis·mapbox·maplibre gl js