@rsbuild/plugin-vue2

Provides support for Vue 2 SFC (Single File Components). The plugin internally integrates vue-loader v15.
127,514 7
Install
npm install @rsbuild/plugin-vue2
Latest Version:1.2.0
Vue:2
License:MIT
Last Updated:Oct 15, 2026
Links: GitHub  ·  npm
Maintainer: chenjiahan

@rsbuild/plugin-vue2

Provides support for Vue 2 SFC (Single File Components). The plugin internally integrates vue-loader v15.

@rsbuild/plugin-vue2 only supports Vue >= 2.7.0.

npm version license

Usage

Install:

npm add @rsbuild/plugin-vue2 -D

Add plugin to your rsbuild.config.ts:

// rsbuild.config.ts
import { pluginVue2 } from '@rsbuild/plugin-vue2';

export default {
  plugins: [pluginVue2()],
};

After registering the plugin, you can import *.vue files in your code.

Options

If you need to customize the compilation behavior of Vue, you can use the following configs.

vueLoaderOptions

Options passed to vue-loader, please refer to the vue-loader documentation for detailed usage.

  • Type: VueLoaderOptions
  • Default:
const defaultOptions = {
  compilerOptions: {
    whitespace: 'condense',
  },
  experimentalInlineMatchResource: true,
};
  • Example:
pluginVue2({
  vueLoaderOptions: {
    hotReload: false,
  },
});

The Vue 2 plugin is using the vue-loader v15. Please be aware that there may be configuration differences between v15 and the latest version.

splitChunks

When chunkSplit.strategy set to split-by-experience, Rsbuild will automatically split vue and router related packages into separate chunks by default:

  • lib-vue.js: includes vue, vue-loader.
  • lib-router.js: includes vue-router.

This option is used to control this behavior and determine whether the vue and router related packages need to be split into separate chunks.

  • Type:
type SplitVueChunkOptions = {
  vue?: boolean;
  router?: boolean;
};
  • Default:
const defaultOptions = {
  vue: true,
  router: true,
};
  • Example:
pluginVue({
  splitChunks: {
    vue: false,
    router: false,
  },
});

FAQ

/deep/ selector causes compilation error

/deep/ is a deprecated usage as of Vue v2.7. Since it is not a valid CSS syntax, CSS compilation tools like Lightning CSS will fail to compile it.

You can use :deep() instead. See Vue - Deep Selectors for more details.

<style scoped>
  .a :deep(.b) {
    /* ... */
  }
</style>

You can also refer to Vue - RFC 0023 for more details.

License

MIT.

Related Packages

@rsbuild/plugin-vue

Vue 3 plugin of Rsbuild

1,858,620 3,405
@rsbuild/plugin-vue-jsx

Provides support for Vue 3 JSX / TSX syntax. This plugin internally integrates @...

325,348 11
@rsbuild/plugin-vue2-jsx

Provides support for Vue 2 JSX / TSX syntax. The plugin internally integrates @v...

59,628 7

Version History

Version Released License
1.2.0 MIT
1.1.2 MIT
1.1.1 MIT
1.1.0 MIT
1.0.6 MIT
Pre-releases (91)
Version Released License
1.0.1-beta.16 MIT
1.0.1-beta.15 MIT
1.0.1-beta.14 MIT
1.0.1-beta.13 MIT
1.0.1-beta.12 MIT