import * as webpack from 'webpack'; const StringReplacePlugin = require('string-replace-webpack-plugin'); module.exports = (config, commit, env) => { const isProduction = env === 'production'; const isDebug = !isProduction; const pack: webpack.Configuration = { entry: { 'desktop': './src/web/app/desktop/script.js', 'mobile': './src/web/app/mobile/script.js', 'dev': './src/web/app/dev/script.js', 'auth': './src/web/app/auth/script.js' }, module: { rules: [ { enforce: 'pre', test: /\.tag$/, exclude: /node_modules/, loader: StringReplacePlugin.replace({ replacements: [ { pattern: /\$theme\-color\-foreground/g, replacement: () => '#fff' }, { pattern: /\$theme\-color/g, replacement: () => config.themeColor }, ] }) }, { test: /\.tag$/, exclude: /node_modules/, loader: 'riot-tag-loader', query: { hot: false, type: 'livescript', style: 'stylus', expr: false, compact: true, parserOptions: { style: { compress: true } } } }, { test: /\.styl$/, exclude: /node_modules/, use: [ { loader: 'style-loader' }, { loader: 'css-loader' }, { loader: 'stylus-loader' } ] } ] }, plugins: [ new webpack.DefinePlugin({ VERSION: JSON.stringify(commit ? commit.hash : null), CONFIG: { themeColor: JSON.stringify(config.themeColor), apiUrl: JSON.stringify(config.api_url), aboutUrl: JSON.stringify(config.about_url), devUrl: JSON.stringify(config.dev_url), host: JSON.stringify(config.host), url: JSON.stringify(config.url), recaptcha: { siteKey: JSON.stringify(config.recaptcha.siteKey), } } }), new StringReplacePlugin(), ], output: { filename: '[name]/script.js' } }; if (isProduction) { // TODO. // see https://github.com/webpack/webpack/issues/2545 //pack.plugins.push(new Webpack.optimize.UglifyJsPlugin()) } return pack; };