SPA (Single Page Application) でWebアプリケーションを作る場合、HTMLの生成やREST APIはJavaScript/CSSの配信とは別のサーバーで行うものの、クラウド環境ではCloudFrontなりリバースプロキシなりが存在していて、結果全て同一ドメインで運用されていることがある。
この状況で、JavaScriptをローカル環境のwebpack-dev-serverで試験しようとすると、REST APIが別ポートになるのでローカル環境でだけCORSの設定が必要だったり、深いパスでリロードするとNot Foundになったりといったような面倒ごとが発生する。
これを解決するには、nginxなりでproxyを立てても良いが、webpack-dev-serverにもproxyの機能がついているので、以下のように設定すると簡単。
devServer: { contentBase: 'dist', host: '0.0.0.0', port: 3000, proxy: { '/myapp/api': { target: 'http://127.0.0.1:9292' }, '/myapp': { target: 'http://localhost:3000/examples/index.html', pathRewrite: {'^.*' : ''} } } }
examplesにローカル向けのindex.htmlを置いておいて、CopyWebpackPluginでコピーすると便利。
new CopyWebpackPlugin([ { from: 'examples', to: 'examples' } ]),