webpackのエントリーポイントを自動化する方法

webpackのエントリーポイントを複数設定したいけれど、手動で一つずつ追加するのは煩わしいと感じたことはありませんか?今回は、そんな悩みを解消するために、エントリーポイントを自動で設定する方法をご紹介します。

シンプルな構成で、すぐに実践できる内容です。

目次

手動でエントリーポイントを設定する方法

通常、webpackではentryに各エントリーポイントを手動で指定します。例えば、次のような設定です。

const path = require('path');

module.exports = {
    entry: {
        common: './src/js/common.js',
        top: './src/js/top.js',
        gutenberg: './src/js/gutenberg.js'
    },
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'js/[name].js'
    },
    // その他の設定...
};
webpack.config.js

このように、entryにファイルを手動で追加していく方法は一般的ですが、プロジェクトが大きくなるにつれて、エントリーポイントの数が増え、手動で設定するのが煩わしくなります。

エントリーポイントを自動で設定する方法

エントリーポイントを自動で設定するために、Node.jsのfs(ファイルシステム)モジュールを使用して、指定したディレクトリ内のJavaScriptファイルを動的に取得し、エントリーポイントとして設定します。

const fs = require('fs');
const path = require('path');

const entryFiles = fs.readdirSync(path.resolve(__dirname, 'src/js'))
    .filter(file => file.endsWith('.js'))  // .jsファイルのみ対象
    .reduce((entries, file) => {
        const name = path.basename(file, '.js');
        entries[name] = path.resolve(__dirname, `src/js/${file}`);
        return entries;
    }, {});

module.exports = {
    entry: entryFiles,
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'js/[name].js'
    },
    // その他の設定...
};
webpack.config.js

この方法では、src/jsディレクトリ内のすべての.jsファイルを自動的にエントリーポイントとして設定します。例えば、common.jstop.jsgutenberg.jssrc/jsにある場合、dist/js/common.jsdist/js/top.jsdist/js/gutenberg.jsとして出力されます。

まとめ

webpackでエントリーポイントを手動で追加するのは面倒ですが、Node.jsのfsモジュールを使って、src/jsディレクトリ内のJavaScriptファイルを動的に取得することで、エントリーポイントを自動的に設定することができます。これで、ファイルを追加するたびにwebpackの設定を更新する手間が省け、より効率的に開発を進めることができます。

以上、webpackでエントリーポイントを自動化する方法のご紹介でした。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次