Vue

使い方

Rspack は Vue をサポートするために2つのソリューションを提供します。

  • Rsbuild を使用する: Rsbuild は Vue 3 および Vue 2 をすぐに使える状態でサポートしており、Vue プロジェクトをすばやく作成できます。詳しくは、「Rsbuild - Vue 3」または「Rsbuild - Vue 2」を参照してください。
  • Rspack を手動で設定する: このドキュメントを参照して、Vue の設定を手動で追加できます。

Vue 3

現在、Rspack は Vue3 をサポートしています。vue-loader のバージョンが >= 17.2.2 であることを確認し、次のように設定してください。

rspack.config.js
const { VueLoaderPlugin } = require('vue-loader');

/** @type {import('@rspack/cli').Configuration} */
const config = {
  // ...
  plugins: [new VueLoaderPlugin()],
  module: {
    rules: [
      // ...
      {
        test: /\.vue$/,
        loader: 'vue-loader',
        options: {
          // Note, for the majority of features to be available, make sure this option is `true`
          experimentalInlineMatchResource: true,
        },
      },
    ],
  },
};
module.exports = config;

Rspack は CSS モジュールのコンパイルをネイティブでサポートしているため、CSS 関連のローダーを設定する必要はありません。また、CSS プリプロセッサ(less など)を使用する場合は、次の設定を追加するだけで済みます。

const config = {
  module: {
    rules: [
+      {
+        test: /\.less$/,
+        loader: "less-loader",
+        type: "css",
+      }
    ],
  },
};
module.exports = config;

このとき、Rspack は組み込みの CSS プロセッサを使用して後処理を行います。

CSS ファイルを生成したくない場合は、css-loadervue-style-loader の組み合わせを使用することもできます。

module.exports = {
  module: {
    rules: [
      {
        test: /\.less$/,
        use: ['vue-style-loader', 'css-loader', 'less-loader'],
        type: 'javascript/auto',
      },
    ],
  },
  experiments: {
    css: false, // At this point, you need to turn off `experiments.css` to adapt to the internal processing logic of `vue-loader`
  },
};

また、Rspack には TS のサポートが組み込まれているため、デフォルトで lang="ts" 設定もサポートされています。

<script lang="ts">
  export default {
    // ...
  };
</script>

関連する例については、example-vue3 を参照してください。

Vue 2

Rspack は Vue2 との互換性(vue-loader@15 を使用)を完了しました。

Vue2 プロジェクトを設定する際は、experiments.css をオフにするか、CSS 関連のルールで Rule.type = "javascript/auto" を使用するようにしてください。

rspack.config.js
module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/,
        use: ['vue-style-loader', 'css-loader'],
        type: 'javascript/auto',
      },
      {
        test: /\.ts$/, // add this rule when you use TypeScript in Vue SFC
        loader: 'builtin:swc-loader',
        options: {
          jsc: {
            parser: {
              syntax: 'typescript',
            },
          },
        },
        type: 'javascript/auto',
      },
    ],
  },
  experiments: {
    css: false,
  },
};

TypeScript は、Rspack のネイティブ builtin:swc-loader を使用してサポートされています。詳細については、こちらを参照してください。

関連する例については、example-vue2 および example-vue2-ts を参照してください。

Vue 3 JSX

Rspack は babel-loader の使用をサポートしているため、@vue/babel-plugin-jsx プラグインを直接使用して、Vue 3 JSX 構文をサポートできます。

インストール

まず、babel-loader@babel/core、および @vue/babel-plugin-jsx をインストールする必要があります。

npm
yarn
pnpm
bun
npm add babel-loader @babel/core @vue/babel-plugin-jsx -D

設定

次に、.jsx ファイルで Vue 3 JSX 構文をサポートするために、次の設定を追加します。

rspack.config.js
/**
 * @type {import('@rspack/cli'). Configuration}
 */
module.exports = {
  context: __dirname,
  entry: {
    main: './src/index.jsx',
  },
  module: {
    rules: [
      {
        test: /\.jsx$/,
        use: [
          {
            loader: 'babel-loader',
            options: {
              plugins: ['@vue/babel-plugin-jsx'],
            },
          },
        ],
      },
    ],
  },
};

Rspack は、参考のために Vue JSX の を提供しています。