summaryrefslogtreecommitdiff
path: root/webpack.config.js
diff options
context:
space:
mode:
Diffstat (limited to 'webpack.config.js')
-rw-r--r--webpack.config.js59
1 files changed, 59 insertions, 0 deletions
diff --git a/webpack.config.js b/webpack.config.js
new file mode 100644
index 00000000..261c1c44
--- /dev/null
+++ b/webpack.config.js
@@ -0,0 +1,59 @@
+const path = require('path');
+const webpack = require('webpack');
+const ExtractTextPlugin = require('extract-text-webpack-plugin');
+const nodeEnv = (process.env.NODE_ENV || 'development').trim();
+
+// eslint-disable-next-line
+const __DEV__ = nodeEnv !== 'production';
+
+const devtool = __DEV__ ? '#source-map' : '';
+
+const plugins = [
+ new webpack.DefinePlugin({
+ 'process.env': {
+ NODE_ENV: JSON.stringify(nodeEnv),
+ },
+ }),
+ new ExtractTextPlugin('[name].css'),
+];
+
+
+const themeEntries = {};
+for (let i = 0; i < 7; i++) {
+ themeEntries[`theme${i}`] = `./resources/assets/themes/theme${i}.less`;
+}
+
+module.exports = {
+ context: __dirname,
+ resolve: {
+ extensions: ['.js', '.jsx'],
+ },
+ entry: {
+ ...themeEntries,
+ vendor: './resources/assets/js/vendor.js',
+ },
+ output: {
+ path: path.resolve('public/assets'),
+ filename: '[name].js',
+ publicPath: '',
+ },
+ module: {
+ rules: [
+ {
+ test: /\.jsx?$/,
+ exclude: /(node_modules)/,
+ loader: 'babel-loader',
+ query: { cacheDirectory: true },
+ },
+ { test: /\.(eot|ttf|otf|svg|woff2?)(\?.*)?$/, loader: 'file-loader' },
+ { test: /\.json$/, loader: 'json-loader' },
+ { test: /\.css$/, loader: 'style-loader!css-loader' },
+ { test: /\.less$/, use: ExtractTextPlugin.extract({
+ fallback: 'style-loader',
+ use: 'css-loader!less-loader'
+ })}
+ ],
+ },
+ plugins,
+ devtool,
+};