71 lines
1.7 KiB
JavaScript
71 lines
1.7 KiB
JavaScript
const { merge } = require("webpack-merge");
|
|
const baseConfig = require("./webpack.base.js");
|
|
const path = require("path");
|
|
const DefinePlugin = require("webpack").DefinePlugin;
|
|
const TerserPlugin = require("terser-webpack-plugin");
|
|
const CopyPlugin = require("copy-webpack-plugin");
|
|
|
|
const serverConfig = {
|
|
target: "node",
|
|
name: "server",
|
|
entry: {
|
|
server: "./src/server/index.ts",
|
|
},
|
|
|
|
output: {
|
|
path: path.resolve(process.cwd(), "dist/"),
|
|
filename: "[name].js",
|
|
libraryTarget: "commonjs2",
|
|
chunkFilename: "chunks/[name].js",
|
|
assetModuleFilename: (pathData) => {
|
|
//console.log({ pathData });
|
|
|
|
let result = pathData.filename
|
|
.substr(pathData.filename.indexOf("public/"))
|
|
.split("/")
|
|
.slice(1);
|
|
|
|
result.pop();
|
|
|
|
let folder = result.join("/");
|
|
|
|
folder += result.length === 0 ? "" : "/";
|
|
|
|
return `/login/static/${folder}[name][ext]?hash=[contenthash]`; //`${folder}/[name].[contenthash][ext]`;
|
|
},
|
|
},
|
|
|
|
plugins: [
|
|
new CopyPlugin({
|
|
patterns: [
|
|
{
|
|
from: "src/server/config/",
|
|
},
|
|
],
|
|
}),
|
|
],
|
|
};
|
|
|
|
module.exports = (env, argv) => {
|
|
if (argv.mode === "production") {
|
|
serverConfig.mode = "production";
|
|
serverConfig.optimization = {
|
|
minimize: !env.minimize,
|
|
minimizer: [new TerserPlugin()],
|
|
};
|
|
} else {
|
|
serverConfig.mode = "development";
|
|
}
|
|
serverConfig.plugins = [
|
|
...serverConfig.plugins,
|
|
new DefinePlugin({
|
|
IS_DEVELOPMENT: argv.mode !== "production",
|
|
PORT: process.env.PORT || 5011,
|
|
IS_PERSONAL: env.personal || false,
|
|
IS_ROOMS_MODE: env.rooms || false,
|
|
}),
|
|
];
|
|
|
|
return merge(baseConfig, serverConfig);
|
|
};
|