Files
bitburner-src/webpack.config.js
Steven Evans 3faed7caf2 [refactor, chore] "Compile" CSS via Webpack
This may seem unnecessary (and odd to import CSS files into JS...), but
this sets up the project for being able to keep the distributed
(release) resources all together, as well as setting the stage for
introducing something like SCSS.
2018-07-16 23:22:24 -04:00

85 lines
2.3 KiB
JavaScript

var path = require('path');
var webpack = require('webpack');
var MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = (env, argv) => ({
plugins: [
new webpack.DefinePlugin({
'process.env.NODE_ENV': argv.mode === 'development' ? "\"development\"" : "\"production\""
}),
// http://stackoverflow.com/questions/29080148/expose-jquery-to-real-window-object-with-webpack
new webpack.ProvidePlugin({
// Automtically detect jQuery and $ as free var in modules
// and inject the jquery library
// This is required by many jquery plugins
jquery: "jquery",
jQuery: "jquery",
$: "jquery"
}),
new MiniCssExtractPlugin({
filename: "[name].css",
chunkFilename: "[id].css"
})
],
target: "web",
entry: {
"dist/engine": "./src/engine.js",
"tests/tests": "./tests/index.js",
},
devtool: "source-map",
output: {
path: path.resolve(__dirname, "./"),
filename: "[name].bundle.js"
},
module: {
rules: [
{
test: /\.tsx?$/,
loader: 'ts-loader',
exclude: /node_modules/
},
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}
]
},
optimization: {
removeAvailableModules: true,
removeEmptyChunks: true,
mergeDuplicateChunks: true,
flagIncludedChunks: true,
occurrenceOrder: true,
sideEffects: true,
providedExports: true,
usedExports: true,
concatenateModules: false,
namedModules: false,
namedChunks: false,
minimize: argv.mode !== 'development',
portableRecords: true,
splitChunks: {
cacheGroups: {
vendor: {
test: /[\\/]node_modules[\\/]/,
name: 'dist/vendor',
chunks: 'all'
}
}
}
},
devServer: {
publicPath: "/dist",
},
resolve: {
extensions: [
".tsx",
".ts",
".js"
]
}
});