Server now works and compiles
This commit is contained in:
127
private/server/WebpackCompilerOptions.js
Normal file
127
private/server/WebpackCompilerOptions.js
Normal file
@@ -0,0 +1,127 @@
|
||||
// Copyright (c) 2018 Dominic Masters
|
||||
//
|
||||
// MIT License
|
||||
//
|
||||
// Permission is hereby granted, free of charge, to any person obtaining
|
||||
// a copy of this software and associated documentation files (the
|
||||
// "Software"), to deal in the Software without restriction, including
|
||||
// without limitation the rights to use, copy, modify, merge, publish,
|
||||
// distribute, sublicense, and/or sell copies of the Software, and to
|
||||
// permit persons to whom the Software is furnished to do so, subject to
|
||||
// the following conditions:
|
||||
//
|
||||
// The above copyright notice and this permission notice shall be
|
||||
// included in all copies or substantial portions of the Software.
|
||||
//
|
||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
//Includes
|
||||
const
|
||||
path = require('path'),
|
||||
webpack = require('webpack'),
|
||||
HtmlWebpackPlugin = require('html-webpack-plugin'),
|
||||
CompressionPlugin = require("compression-webpack-plugin"),
|
||||
UglifyJsPlugin = require('uglifyjs-webpack-plugin'),
|
||||
MiniCssExtractPlugin = require("mini-css-extract-plugin")
|
||||
;
|
||||
|
||||
//Constants
|
||||
const SOURCE_DIRECTORY = './public';
|
||||
const ENTRY_FILE = 'index.jsx';
|
||||
const ENTRY_WRAPPER = 'index.html';
|
||||
|
||||
module.exports = function(server, app) {
|
||||
//Create our dirs
|
||||
let entryDir = path.join(app.getPublicDirectory(), '..', 'public');
|
||||
|
||||
//Create our output
|
||||
let output = {};
|
||||
|
||||
//Set the entry point
|
||||
output.entry = path.join(entryDir, ENTRY_FILE);
|
||||
|
||||
//Set the output
|
||||
output.output = {
|
||||
path: app.getPublicDirectory(),
|
||||
filename: "app.js"
|
||||
}
|
||||
|
||||
//Set Resolves
|
||||
output.resolve = {
|
||||
modules: ['node_modules', SOURCE_DIRECTORY],
|
||||
extensions: ['.js', '.jsx', '.css', '.scss' ]
|
||||
};
|
||||
|
||||
//Setup Modules
|
||||
output.module = {
|
||||
rules: [
|
||||
{
|
||||
test: /\.jsx?$/,
|
||||
exclude: /node_modules/,
|
||||
loaders: ['babel-loader']
|
||||
},
|
||||
{
|
||||
test: /\.scss$|\.css$/i,
|
||||
use: [
|
||||
MiniCssExtractPlugin.loader,
|
||||
"css-loader",
|
||||
'sass-loader',
|
||||
]
|
||||
},
|
||||
|
||||
{
|
||||
test: /\.jpe?g$|\.gif$|\.png$|\.svg|\.webm|\.mp4$/i,
|
||||
loader: "file-loader?name=[path][name].[ext]"
|
||||
},
|
||||
|
||||
{
|
||||
test: /\.(eot|ttf|woff(2)?)(\?v=\d+\.\d+\.\d+)?/,
|
||||
loader: 'url-loader'
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
//Setup the Plugins
|
||||
let HTMLWebpackPluginConfig = new HtmlWebpackPlugin({
|
||||
template: path.join(SOURCE_DIRECTORY, ENTRY_WRAPPER),
|
||||
filename: ENTRY_WRAPPER,
|
||||
inject: true
|
||||
});
|
||||
|
||||
let UglifyPluginConfig = new UglifyJsPlugin({
|
||||
test: /\.js($|\?)/i
|
||||
});
|
||||
|
||||
let MiniCssExtractConfig = new MiniCssExtractPlugin({
|
||||
filename: "[name].css",
|
||||
chunkFilename: "[id].css"
|
||||
})
|
||||
|
||||
//Set the plugins
|
||||
output.plugins = [
|
||||
new webpack.DefinePlugin({
|
||||
'process.env.NODE_ENV': JSON.stringify('production')
|
||||
}),
|
||||
MiniCssExtractConfig,
|
||||
HTMLWebpackPluginConfig
|
||||
];
|
||||
|
||||
//Minimization
|
||||
output.optimization = {
|
||||
minimize: true,
|
||||
minimizer: [
|
||||
UglifyPluginConfig
|
||||
]
|
||||
};
|
||||
|
||||
//Now setup the production values
|
||||
output.devtool = 'source-map';
|
||||
|
||||
return output;
|
||||
}
|
Reference in New Issue
Block a user