Rollup で axios をバンドル

Rollup で axios をブラウザ用にバンドルする方法。

さきに結論から言うと、以下のような設定でバンドルできます。

rollup.config.js

import resolve from 'rollup-plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import replace from 'rollup-plugin-replace';

export default {
  input: 'script.js',
  output: {
    file: 'bundle.js',
    format: 'iife'
  },
  plugins: [
    resolve({
      browser: true
    }),
    commonjs(),
    replace( {
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
}

script.js

import axios from 'axios';

axios.get('https://api.zipaddress.net?zipcode=900-0012').then(function(data) {
  console.log(data);
});

説明

axios を Rollup でバンドルするには以下の3つのプラグインが必要になります。

  • rollup-plugin-node-resolve
  • rollup-plugin-commonjs
  • rollup-plugin-replace

まず node_modules から axios を取得するために rollup-plugin-node-resolve が必要となります。

次に、 axios は CommonJS 形式で書かれたいるため、それを読み込むために rollup-pllugin-commonjs がいります。

そして最後に、 axios 内には process.env.NODE_ENV が出てきますが、Rollup では process オブジェクトを扱わないのでそれを置換するために rollup-plugin-repalce がそれぞれ必要となっています。

もう一つ重要なのが、ブラウザ用にバンドルする場合は rollup-plugin-node-resolve の設定で browser を true に設定する必要があります。

    resolve({
      browser: true
    }),

これによって axios の package.json 内にある browser フィールドが読み込まれ、適切なファイルがバンドルされるようになります。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です