webpack で複数の entry ファイルを出力する
あらすじ
ユーザー画面と管理画面を SPA で作りたいんだけど component とか再利用したい時のお話です
mkdir practice-webpack-output && cd $_ mkdir -p src/{app,admin} www/{app,admin} npm init -y npm install --save-dev webpack babel-core babel-loader babel-preset-es2015
create .babelrc
echo '{"presets": ["es2015"]}' > .babelrc
create webpack.config.js
const path = require('path') const webpack = require('webpack') module.exports = { entry: { "app/app": "./src/app/index.js", "admin/admin": "./src/admin/index.js" }, output: { path: "./www", filename: "[name].bundle.js", }, devtool: 'inline-source-map', resolve: { extensions: ['', '.js'], }, module: { loaders:[ { test: /\.js$/, exclude: /node_modules/, loader: 'babel' }, ] } }
共通処理を記述
echo 'console.log("common")' > src/common.js
ユーザー画面用の処理を記述
echo 'import "../common"' > src/app/index.js echo 'console.log("app")' >> src/app/index.js
管理画面の処理を記述
echo 'import "../common"' > src/admin/index.js echo 'console.log("admin")' >> src/admin/index.js
$(npm bin)/webpack
確認
% node www/app/app.bundle.js common app % node www/admin/admin.bundle.js common admin
参考
http://webdesign-dackel.com/2015/09/10/webpack-multiple-output/