搭个项目玩玩 Vue3 + script setup + ts + Vite + Volar

本文介绍了如何使用Vite创建Vue3+TS项目,包括项目目录结构解析、初始化命令、遇到的运行错误及解决方法。Vite使用esbuild快速转译TS,但不进行类型检查,推荐结合vue-tsc进行类型验证。同时,文章提到了如何在tsconfig.json中配置跳过第三方包类型检查。

使用 Vite 创建 vue + ts 项目

  1. 执行执行,创建项目模板

	$ npm init vite@latest
	√ Project name: ... v3_demo
	√ Select a framework: » vue
	√ Select a variant: » vue-ts
	
	Scaffolding project in C:\Users\admin\Desktop\v3_demo...
	
	Done. Now run:
	
	  cd v3_demo
	  npm install
	  npm run dev


  1. 项目目录结构说明
	
	├── public                  # 不需要打包的静态资源
	│   └── favicon.ico
	├── src
	│   ├── api                 # 后台 API 接口封装
	│   ├── assets              # 需要打包的静态资源
	│   ├── components          # 公共组件
	│   ├── composables         # 通用的组合式 API
	│   ├── layout              # 页面布局模板
	│   ├── plugins             # 插件
	│   ├── router              # 路由
	│   ├── store               # Vuex 存储
	│   ├── styles              # 样式
	│     └── index.scss        # 全局通用样式
	│   ├── utils               # 工具模块
	│   ├── views               # 路由页面
	│   ├── App.vue             # 根组件
	│   ├── main.ts             # 入口模块
	│   ├── shims-vue.d.ts      # 补充 .vue 模块类型声明
	│   └── vite-env.d.ts       # 补充 vite 类型声明
	├── .gitignore
	├── README.md
	├── index.html
	├── package-lock.json
	├── package.json
	├── tsconfig.json
	└── vite.config.ts

  1. vite新建vue3项目运行报错
    创建完项目,肯定是要安装依赖包,再运行,但是盆友们会发现,运行直接报错了
admin@DESKTOP-ABKQLS5 C:\Users\admin\Desktop\v3_demo
$ npm run dev

> v3_demo@0.0.0 dev
> vite

events.js:292
      throw er; // Unhandled 'error' event
      ^

Error: spawn C:\Users\admin\Desktop\v3_demo\node_modules\esbuild\esbuild.exe ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:269:19)
    at onErrorNT (internal/child_process.js:465:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21)
Emitted 'error' event on ChildProcess instance at:
    at Process.ChildProcess._handle.onexit (internal/child_process.js:275:12)
    at onErrorNT (internal/child_process.js:465:16)
    at processTicksAndRejections (internal/process/task_queues.js:80:21) {
  errno: -4058,
  code: 'ENOENT',
  syscall: 'spawn C:\\Users\\admin\\Desktop\\v3_demo\\node_modules\\esbuild\\esbuild.exe',
  path: 'C:\\Users\\admin\\Desktop\\v3_demo\\node_modules\\esbuild\\esbuild.exe',
  spawnargs: [ '--service=0.12.22', '--ping' ]
}

解决办法: node ./node_modules/esbuild/install.js
4. 在 Vite 创建的项目中,是默认没有ESLint的
5. Vite中 TS 的说明

Vite 天然支持引入 .ts 文件。
Vite 仅执行 .ts 文件的转译工作,并 不 执行任何类型检查。并假设类型检查已经被你的 IDE 或构建过程接管了(你可以在构建脚本中运行 tsc --noEmit 或者安装 vue-tsc 然后运行 vue-tsc --noEmit 来对你的 *.vue 文件做类型检查)。
Vite 使用 esbuild 将 TypeScript 转译到 JavaScript,约是 tsc 速度的 20~30 倍,同时 HMR 更新反映到浏览器的时间小于 50ms。
注意因为 esbuild 只执行转译工作而不含类型信息,所以它不支持 TypeScript 的特定功能例如常量枚举和隐式 “type-only” 导入。你必须在你的 tsconfig.json 中的 compilerOptions 里设置 “isolatedModules”: true,这样 TS 才会警告你哪些功能无法与独立编译模式一同工作

  1. vue-tsc 和 tsc
    tsc 只能验证 ts 代码类型
    vue-tsc 可以验证 ts + Vue Template 中的类型(基于 Volar)
    建议在 package.json 中新增一个 scripts 脚本用来单独执行 TS 类型验证:
	"scripts": {
	  ...
	  "build": "npm run tsc && vite build",
	  "tsc": "vue-tsc -noEmit"
	}

-noEmit 表示只验证类型,不输出编译结果
7. 跳过第三方包类型检查, 在tsconfig.json中添加:

	{
	  "compilerOptions": {
	    ...
	    "baseUrl": "./",
	    "skipLibCheck": true
	  }
	}

  1. Vue3 的TS具体语法,这里不再赘述,不会的小伙伴可以直接参考
### 3.1 配置 TypeScript.vue 文件的支持 在 Vue3 + Vite + TypeScript 项目中,若出现无法识别 `.vue` 文件的问题,通常是因为 TypeScript 缺乏对 `.vue` 文件的模块声明。为了解决这个问题,需要在项目中添加一个全局的类型声明文件,例如 `global.d.ts` 或 `shims-vue.d.ts`,并在其中添加以下内容: ```typescript declare module &#39;*.vue&#39; { import { DefineComponent } from &#39;vue&#39; const component: DefineComponent<{}, {}, any> export default component } ``` 该声明文件的作用是告诉 TypeScript,所有以 `.vue` 结尾的模块都可以被当作一个 Vue 组件导入,并获得类型检查和代码提示功能[^2]。 ### 3.2 配置 ViteVue 和 TypeScript 的支持 Vite 默认支持 Vue 3 的单文件组件,但为了在 `.vue` 文件中使用 TypeScript 语法,还需安装 `@vitejs/plugin-vue` 插件,并在 `vite.config.ts` 中进行配置: ```typescript import { defineConfig } from &#39;vite&#39; import vue from &#39;@vitejs/plugin-vue&#39; import vueJsx from &#39;@vitejs/plugin-vue-jsx&#39; export default defineConfig({ plugins: [ vue({ isProduction: false, }), vueJsx() ] }) ``` 通过该配置,Vite 将能够正确解析 `.vue` 文件中的 `script setup`、`setup` 语法以及 TypeScript 类型系统[^1]。 ### 3.3 配置 VSCode 对 Vue 文件中 TypeScript 的识别 如果在 `.vue` 文件的 `<script>` 标签中使用了 TypeScript 语法,但编辑器无法正确识别,可能是因为 VSCode 没有安装 Vue 官方插件。为解决此问题,应前往 VSCode 扩展商店安装 [Vue Official](https://marketplace.visualstudio.com/items?itemName=Vue.volar) 插件,该插件提供对 Vue 3 的完整语言支持,包括 TypeScript 语法高亮、类型检查和智能提示[^3]。 安装完成后,在 `.vue` 文件中切换语言模式为 `Vue`,即可在 `<script setup>` 或 `<script lang="ts">` 中正常编写 TypeScript 代码。 ### 3.4 确保依赖版本一致性 为避免因版本不一致导致的模块解析失败问题,应确保 `vue`、`@vitejs/plugin-vue` 和 `vue-template-compiler` 的版本一致。例如: ```json "dependencies": { "vue": "^3.2.0" }, "devDependencies": { "@vitejs/plugin-vue": "^3.2.0", "vue-template-compiler": "^3.2.0" } ``` 版本一致性可防止因 API 变化或内部机制调整而引发的兼容性问题[^1]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QQ1447419295

谢谢老弟

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值