webpackでファイルをbundleする際に、サーバー側のファイルとクライアント側のファイルを別々に指定したくて、色々模索したのですが、ある方法に落ち着いたので、備忘録として残します。
以下のディレクトリ構造で
src/
- client.js
- server.js
package.json
webpack.config.js
以下のように出力したい
dist/
- server.bundle.js
public/
- client.bundle.js
src/
- client.js
- server.js
package.json
webpack.config.js
この場合のwebpack.config.jsについて、以下のように解決いたしました。
const path = require('path')
const nodeExternals = require('webpack-node-externals')
const env = process.env.NODE_ENV || 'development'
const isDevelopment = env === 'development'
module.exports = {
mode: env,
target: 'node',
devtool: isDevelopment ? 'source-map' : false,
entry: {
'public/client': './src/client.ts',
'dist/server': './src/server.ts',
},
output: {
path: __dirname,
filename: '[name].bundle.js',
},
// 以下省略
}
色々模索してみましたが、上記の方法が一番手軽なような気がしました。
もしもっと簡単な方法があったり、より良い方法があったら知りたい。。。