vitejs/plugin-vue插件

源文档:地址

注意:从vue 3.2.13+和@vitejs/plugin-vue 1.9.0+开始,@vue/compiler-sfc不再需要作为对等依赖。

// vite.config.js
import vue from '@vitejs/plugin-vue'

export default {
  plugins: [vue()],
}

为了支持JSX/TSX,还需要@vitejs/plugin-vue-JSX。

选项

export interface Options {
  include?: string | RegExp | (string | RegExp)[]
  exclude?: string | RegExp | (string | RegExp)[]

  isProduction?: boolean

  // options to pass on to vue/compiler-sfc
  script?: Partial<
    Omit<
      SFCScriptCompileOptions,
      | 'id'
      | 'isProd'
      | 'inlineTemplate'
      | 'templateOptions'
      | 'sourceMap'
      | 'genDefaultAs'
      | 'customElement'
      | 'defineModel'
    >
  >

  template?: Partial<
    Omit<
      SFCTemplateCompileOptions,
      | 'id'
      | 'source'
      | 'ast'
      | 'filename'
      | 'scoped'
      | 'slotted'
      | 'isProd'
      | 'inMap'
      | 'ssr'
      | 'ssrCssVars'
      | 'preprocessLang'
    >
  >
  style?: Partial<
    Omit<
      SFCStyleCompileOptions,
      | 'filename'
      | 'id'
      | 'isProd'
      | 'source'
      | 'scoped'
      | 'cssDevSourcemap'
      | 'postcssOptions'
      | 'map'
      | 'postcssPlugins'
      | 'preprocessCustomRequire'
      | 'preprocessLang'
      | 'preprocessOptions'
    >
  >

  /**
   * Transform Vue SFCs into custom elements.
   * - `true`: all `*.vue` imports are converted into custom elements
   * - `string | RegExp`: matched files are converted into custom elements
   *
   * @default /\.ce\.vue$/
   */
  customElement?: boolean | string | RegExp | (string | RegExp)[]

  /**
   * Use custom compiler-sfc instance. Can be used to force a specific version.
   */
  compiler?: typeof _compiler
}

资源URL处理

当@vitejs/plugin-vue编译SFC中的<template>块时,它还将遇到的任何资产URL转换为ESM导入。

例如,以下模板片段:

<img src="../image.png" />

与以下内容相同:

<script setup>
import _imports_0 from '../image.png'
</script>

<img :src="_imports_0" />

默认情况下,将转换以下标记/属性组合,并且可以使用template.transformAssetUrls选项进行配置。

{
  video: ['src', 'poster'],
  source: ['src'],
  img: ['src'],
  image: ['xlink:href', 'href'],
  use: ['xlink:href', 'href']
}

请注意,只有作为静态字符串的属性值才会被转换。否则,您需要手动导入资产,例如从“..”导入imgUrl/image.png'。

将选项传递给vue/compiler sfc的示例:

import vue from '@vitejs/plugin-vue'

export default {
  plugins: [
    vue({
      template: {
        compilerOptions: {
          // ...
        },
        transformAssetUrls: {
          // ...
        },
      },
    }),
  ],
}

转换自定义块的示例

import vue from '@vitejs/plugin-vue'
import yaml from 'js-yaml'

const vueI18nPlugin = {
  name: 'vue-i18n',
  transform(code, id) {
    // if .vue file don't have <i18n> block, just return
    if (!/vue&type=i18n/.test(id)) {
      return
    }
    // parse yaml
    if (/\.ya?ml$/.test(id)) {
      code = JSON.stringify(yaml.load(code.trim()))
    }
    // mount the value on the i18n property of the component instance
    return `export default Comp => {
      Comp.i18n = ${code}
    }`
  },
}

export default {
  plugins: [vue(), vueI18nPlugin],
}

创建一个名为Demo.vue的文件,将lang=“yaml”添加到<i18n>块中,然后可以使用yaml的语法:

<template>Hello</template>

<i18n lang="yaml">
message: 'world'
fullWord: 'hello world'
</i18n>

消息安装在组件实例的i18n属性上,您可以这样使用:

<script setup lang="ts">
import Demo from 'components/Demo.vue'
</script>

<template>
  <Demo /> {{ Demo.i18n.message }}
  <div>{{ Demo.i18n.fullWord }}</div>
</template>

 使用Vue SFCs作为自定义元素

需要vue@^3.2.0&@vitejs/plugin vue@^ 1.4.0

Vue 3.2引入了defineCustomElement方法,该方法适用于SFCs。默认情况下,在构建过程中,会提取SFC内的<style>标记并将其合并到CSS文件中。但是,当运送自定义元素库时,可能需要将样式内联为JavaScript字符串,并将其注入自定义元素的影子根中。

从1.4.0开始,以*.ce.vue结尾的文件将以“自定义元素”模式编译:其<style>标记被编译成内联的CSS字符串,并作为其styles属性附加到组件:

import { defineCustomElement } from 'vue'
import Example from './Example.ce.vue'

console.log(Example.styles) // ['/* css content */']

// register
customElements.define('my-example', defineCustomElement(Example))

请注意,在自定义元素模式中,不需要使用<style-scoped>,因为CSS已经在shadow DOM中确定了作用域。

customElement插件选项可用于配置行为:

{customElement:true}将以自定义元素模式导入所有*.vue文件。
使用字符串或正则表达式模式更改文件应作为自定义元素加载的方式(此检查在包含和排除匹配之后应用)。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要安装vitejs/plugin-vue插件,您需要在您的项目中进行以下步骤: 1. 在您的项目根目录下的vite.config.js文件中,引入插件。可以参考下面的代码: ```javascript import vue from '@vitejs/plugin-vue' export default { plugins: [ vue() ] } ``` 2. 确保您的项目中已经安装了vitevue。您可以使用npm或yarn进行安装,具体命令如下: ```bash npm install @vitejs/plugin-vue ``` 或 ```bash yarn add @vitejs/plugin-vue ``` 3. 在您的vite.config.js文件中,将插件添加到plugins数组中,如上面的代码所示。 4. 保存vite.config.js文件。 这样,您就成功安装了vitejs/plugin-vue插件,并将其添加到了您的项目中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [5分钟学会 vite](https://blog.csdn.net/qq_43220213/article/details/129607396)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Vue3.0教程 (七).vite插件](https://blog.csdn.net/qq_38120798/article/details/126061060)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值