对于同一个项目,我可以在Windows 10中通过自定义组件名使用命令+单击跳转到对应的.vue
文件,但在MacOS中无法使用命令+单击跳转,我尝试过重新安装VScode和打开其他项目,问题仍然存在,我使用unplugin-vue-components
自动导入组件,生成components.d.ts,项目可以正常运行。
在windows版本下运行时会显示显示类型,但mac中自定义组件的类型显示任何.ts
或.js
函数方法和原生标签,如div
可以跳转,但自定义组件不能跳转,比如el-button
。我也在github https://github.com/unplugin/unplugin-vue-components/issues/710上提出了同样的问题,因为我没有足够的信誉来上传图片。
- VScode版本:1.84.0(手臂)
- 系统版本:MacOS Ventura 13.6
- unplugin-vue-components:0.25.1
- TypeScript Vue Plugin(Volar)1.8.22
- Vue语言功能(Volar)1.8.22
- PNPM 8.10.2
- Nodejs 20.9.0
在MacOS上使用命令并单击以跳转到相应自定义组件的.vue
文件。
- tsconfig.app.json
{
"extends": "@vue/tsconfig/tsconfig.dom.json",
"include": ["src/types/*.d.ts", "src/**/*.ts", "src/**/*.vue"],
"exclude": ["src/**/__tests__/*"],
"compilerOptions": {
"composite": true,
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
}
}
}
字符串
- vite.config.ts
import { fileURLToPath, URL } from 'node:url';
import { defineConfig, loadEnv } from 'vite';
import vue from '@vitejs/plugin-vue';
import AutoImport from 'unplugin-auto-import/vite';
import IconsResolver from 'unplugin-icons/resolver';
import Components from 'unplugin-vue-components/vite';
import Icons from 'unplugin-icons/vite';
import {
ElementPlusResolver,
VueUseComponentsResolver
} from 'unplugin-vue-components/resolvers';
export default defineConfig(({ command, mode }) => {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
const isBuild = command === 'build';
// 读取env配置文件
const env = loadEnv(mode, process.cwd());
return {
plugins: [
vue(),
// api按需导入
AutoImport({
// 定义element-plus api按需加载
resolvers: [ElementPlusResolver()],
// 导入vue以及其他 api按需加载
imports: ['vue', 'vue-router', 'pinia'],
// 目录文件按需加载
dirs: ['src/enums/**/*', 'src/stores/**/*'],
vueTemplate: true,
// 类型文件输出目录
dts: 'src/types/auto-imports.d.ts'
}),
// 自动导入组件
Components({
resolvers: [
// Element plus组件自动导入
ElementPlusResolver(),
// Vue组件自动导入
VueUseComponentsResolver(),
// 图标自动导入
IconsResolver({
prefix: false,
enabledCollections: ['icon-park-outline'],
alias: {
park: 'icon-park-outline'
}
})
],
extensions: ['vue', 'ts'],
dirs: ['src/components', 'src/layouts'],
// 类型文件输出目录
dts: 'src/types/components.d.ts'
}),
Icons({
autoInstall: true,
compiler: 'vue3'
})
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
},
css: {
preprocessorOptions: {
scss: {
additionalData: '@import "./src/assets/styles/var.scss";'
}
}
},
server: {
proxy: {
'/api': {
target: env.VITE_API_URL,
changeOrigin: true
},
'/public': {
target: env.VITE_API_URL,
changeOrigin: true
}
}
}
};
});
型
- tsconfig.json
{
"files": [],
"references": [
{
"path": "./tsconfig.node.json"
},
{
"path": "./tsconfig.app.json"
}
],
"compilerOptions": {
// 指定全局组件类型
"types": ["element-plus/global"]
}
}
型
3条答案
按热度按时间kgsdhlau1#
几天前我遇到了同样的问题。
我的问题是“components.d.ts”和“auto-imports.d.ds”不在tslog.json的“include”字段中。
rm5edbpk2#
参见Element Plus文档
如果使用volar,请将全局组件类型定义添加到
tsconfig.json
中的compilerOptions.types。字符串
hjzp0vay3#
问题解决了,是
Vue Language Features (Volar)
插件版本的问题,1.8.22
版本有BUG,无法显示自定义组件的类型,只需将版本降低到1.8.11
即可。