const webpack = require("webpack"); const path = require("path"); const fs = require("fs"); const CleanWebpackPlugin = require("clean-webpack-plugin"); var config = { cache: true, context: path.resolve(__dirname, "assets/static"), devtool: "cheap-source-map", entry: { unsee: "./unsee.js", help: "./help.js" }, output: { path: path.resolve(__dirname, "assets/static/dist"), publicPath: "static/dist/", filename: "[name].[chunkhash].js" }, plugins: [ new webpack.PrefetchPlugin(path.join(__dirname, "assets/static/unsee.js")), new webpack.PrefetchPlugin(path.join(__dirname, "assets/static/help.js")), new webpack.ProvidePlugin({ $: "jquery", jQuery: "jquery" }), new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/), new CleanWebpackPlugin([ "assets/static/dist" ]), new webpack.optimize.CommonsChunkPlugin({ name: "shared" }), // this will generate loader_${name}.html files that will have // a "; fs.writeFileSync(path.join(__dirname, "assets/static/dist/templates", loaderName), loaderScript); } } }); } ], externals: { "window":"window" }, resolve: { alias: { "./bootstrap/less/variables.less": path.resolve(__dirname + "/node_modules/bootswatch/flatly/variables.less") } }, module: { rules: [ { test: require.resolve("jquery"), use: "expose-loader?$!expose-loader?jQuery" }, { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, use: "url-loader?limit=10000&mimetype=application/font-woff" }, { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, use: "file-loader" }, { test: /\.ico$/, loader: "file-loader?name=[name].[ext]" }, { test: /\.css$/, use: [ { loader: "style-loader" }, { loader: "css-loader" } ] }, { test: /\.scss$/, use: "style-loader" }, { test: /\.less$/, use: [ { loader: "style-loader" }, { loader: "css-loader" }, { loader: "less-loader" } ] }, { test: /\.js$/, include: path.resolve(__dirname, "assets/static"), use: [ { loader: "babel-loader", options: { cacheDirectory: true, presets: [ [ "env", { modules: false } ] ] } } ] } ] }, } // check what NODE_ENV is set, if it's empty we assume production const isDev = (process.env.NODE_ENV === "test"); // enable production only plugins if (!isDev) { config.plugins.push(new webpack.optimize.UglifyJsPlugin({ sourceMap: true })); config.plugins.push(new webpack.LoaderOptionsPlugin({ minimize: true, debug: false, options: { context: __dirname } })); } module.exports = config