如何在 Vite 应用程序中将库作为插件导入?

How to import libraries as plugins in a Vite application?

我有一个新安装的 VITE app

如何导入 vuelidate 库并用作 Vue 插件 以在全局启用该功能。

Vite 不显示“vuelidate”表单。

错误说:

[vite] Avoid deep import "vuelidate/lib/validators" (imported by /src/App.vue) because "vuelidate" has been pre-optimized by vite into a single file. Prefer importing directly from the module entry:

import { ... } from "vuelidate"

If the dependency requires deep import to function properly, add the deep path to optimizeDeps.include in vite.config.js.

main.js 文件

import { createApp } from 'vue'
import Vuelidate from 'vuelidate'
Vue.use(Vuelidate)
import App from './App.vue'
import './index.css'
createApp(App).mount('#app')

App.vue 文件

<template>
  <div>
    <div class="form-group">
      <label class="form__label">Name</label>
      <input class="form__input" v-model.trim="$v.name.$model" />
    </div>
    <div class="error" v-if="!$v.name.required">Field is required</div>
    <div class="error" v-if="!$v.name.minLength">Name must have at least {{ $v.name.$params.minLength.min }} letters.</div>
    <tree-view :data="$v.name" :options="{ rootObjectKey: '$v.name', maxDepth: 2 }"></tree-view>
    <div class="form-group">
      <label class="form__label">Age</label>
      <input class="form__input" v-model.trim.lazy="$v.age.$model" />
    </div>
    <div class="error" v-if="!$v.age.between">Must be between {{ $v.age.$params.between.min }} and {{ $v.age.$params.between.max }}</div>
    <span tabindex="0">Blur to see changes</span>
    <tree-view :data="$v.age" :options="{ rootObjectKey: '$v.age', maxDepth: 2 }"></tree-view>
  </div>
</template>

<script lang="ts">
import { required, minLength, between } from "vuelidate/lib/validators";

export default {
  name: "App",
  data() {
    return {
      name: "",
      age: 0,
    };
  },
  validations: {
    name: {
      required,
      minLength: minLength(4),
    },
    age: {
      between: between(20, 30),
    },
  },
};
</script>

我很确定我必须 在 vite.config.js 中添加到 optimizeDeps.include 的深层路径。 才能全局使用 vuelidate。

我已经在 vite.config.js 文件中尝试了一些行,例如

optimizeDeps.include = "/node_modules/vuelidate/lib/validators"

说:

[vite] failed to load config from E:\test\vue\vite.config.js:

optimizeDeps = "/node_modules/vuelidate/lib/validators"

在控制台上说:

Uncaught SyntaxError: import not found: minLength

https://github.com/vitejs/vite#bare-module-resolving

是不是说vite_无法使用Vue.use(plugin)?

vite Github 页面显示“Vue 用户请注意:Vite 目前仅适用于 Vue 3.x。这也意味着您不能使用尚未与 Vue 3 兼容的库。 “

虽然 Vuelidate 网站的主页上有:“针对 Vue.js 2.0 的简单、轻量级 model-based 验证”。

因此,即使 Vuelidate 可以与 Vue 3 一起使用,Vite 也不能与不兼容的库一起使用。

我猜你的选择是寻找不同的验证器,或者放弃使用 Vite。