# @vitejs/plugin-vue [![npm](https://img.shields.io/npm/v/@vitejs/plugin-vue.svg)](https://npmjs.com/package/@vitejs/plugin-vue) > Note: as of `vue` 3.2.13+ and `@vitejs/plugin-vue` 1.9.0+, `@vue/compiler-sfc` is no longer required as a peer dependency. ```js // vite.config.js import vue from '@vitejs/plugin-vue' export default { plugins: [vue()] } ``` ## Options ```ts export interface Options { include?: string | RegExp | (string | RegExp)[] exclude?: string | RegExp | (string | RegExp)[] ssr?: boolean isProduction?: boolean /** * Transform Vue SFCs into custom elements (requires vue@^3.2.0) * - `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)[] /** * Enable Vue reactivity transform (experimental, requires vue@^3.2.25). * https://github.com/vuejs/core/tree/master/packages/reactivity-transform * * - `true`: transform will be enabled for all vue,js(x),ts(x) files except * those inside node_modules * - `string | RegExp`: apply to vue + only matched files (will include * node_modules, so specify directories in necessary) * - `false`: disable in all cases * * @default false */ reactivityTransform?: boolean | string | RegExp | (string | RegExp)[] // options to pass on to vue/compiler-sfc script?: Partial template?: Partial style?: Partial } ``` ## Example for passing options to `vue/compiler-sfc`: ```ts import vue from '@vitejs/plugin-vue' export default { plugins: [ vue({ template: { compilerOptions: { // ... }, transformAssetUrls: { // default tags tags: { video: ['src', 'poster'], source: ['src'], img: ['src'], image: ['xlink:href', 'href'], use: ['xlink:href', 'href'] } } } }) ] } ``` ## Example for transforming custom blocks ```ts import vue from '@vitejs/plugin-vue' const vueI18nPlugin = { name: 'vue-i18n', transform(code, id) { if (!/vue&type=i18n/.test(id)) { return } if (/\.ya?ml$/.test(id)) { code = JSON.stringify(require('js-yaml').load(code.trim())) } return `export default Comp => { Comp.i18n = ${code} }` } } export default { plugins: [vue(), vueI18nPlugin] } ``` ## Using Vue SFCs as Custom Elements > Requires `vue@^3.2.0` & `@vitejs/plugin-vue@^1.4.0` Vue 3.2 introduces the `defineCustomElement` method, which works with SFCs. By default, `