burdy
Version:
Open Source Headless Platform
138 lines (137 loc) • 5.58 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const webpack_1 = __importDefault(require("webpack"));
const webpackbar_1 = __importDefault(require("webpackbar"));
const path_util_1 = __importDefault(require("../scripts/util/path.util"));
const webpack_node_externals_1 = __importDefault(require("webpack-node-externals"));
const friendly_errors_webpack_plugin_1 = __importDefault(require("@soda/friendly-errors-webpack-plugin"));
const notifier_util_1 = require("../scripts/util/notifier.util");
const isProduction = process.env.NODE_ENV === 'production';
const ShowErrorsPlugin = new friendly_errors_webpack_plugin_1.default({
onErrors: (severity, errors) => {
if (severity !== 'error') {
return;
}
const [error] = errors;
(0, notifier_util_1.notify)({ subtitle: 'Server Webpack - Error', message: error.name });
},
clearConsole: false,
compilationSuccessInfo: { messages: [], notes: [] },
});
ShowErrorsPlugin.displaySuccess = () => { };
const serverDefaultWebpack = {
mode: isProduction ? 'production' : 'development',
bail: false,
performance: {
hints: false,
},
target: 'node',
devtool: isProduction ? false : 'cheap-module-source-map',
externals: [(0, webpack_node_externals_1.default)({ allowlist: [/^burdy/] })],
stats: {
logging: 'error',
all: false,
},
devServer: {
clientLogLevel: 'error',
hot: true,
noInfo: true,
stats: 'errors',
},
output: {
path: path_util_1.default.build(),
filename: '[name].js',
clean: true,
},
optimization: {
runtimeChunk: false,
minimize: false,
},
module: {
rules: [
{
test: /\.[jt]sx?$/,
exclude: /node_modules/,
use: [
{
loader: require.resolve('babel-loader'),
options: {
cacheDirectory: true,
cacheCompression: true,
presets: [
[
require.resolve('@babel/preset-env'),
{
modules: 'cjs',
loose: true,
},
],
require.resolve('@babel/preset-typescript'),
],
plugins: [
require.resolve('babel-plugin-transform-typescript-metadata'),
[
require.resolve('@babel/plugin-proposal-decorators'),
{
legacy: true,
},
],
[
require.resolve('babel-plugin-module-resolver'),
{
root: ['./src/'],
alias: {
'@admin': './src/admin',
'@drivers': './src/drivers',
'@features': './src/features',
'@interfaces': './src/interfaces',
'@listeners': './src/listeners',
'@models': './src/models',
'@scripts': './src/scripts',
'@server': './src/server',
'@shared': './src/shared',
},
},
],
[
require.resolve('@babel/plugin-transform-runtime'),
{
helpers: true,
regenerator: true,
},
],
],
},
},
],
},
{
test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/, /\.ico$/],
loader: require.resolve('url-loader'),
options: {
limit: 1000,
name: '/static/[hash].[ext]',
},
},
],
},
resolve: {
symlinks: false,
extensions: ['.js', '.jsx', '.tsx', '.ts'],
mainFields: ['browser', 'jsnext:main', 'main'],
},
plugins: [
ShowErrorsPlugin,
new webpack_1.default.DefinePlugin({
PROJECT_ENTRY: path_util_1.default.exists(path_util_1.default.projectRoot())
? JSON.stringify(path_util_1.default.projectRoot())
: null
}),
process.env.NODE_ENV === 'production' &&
new webpackbar_1.default({ name: 'Server', color: '#0d63c6' }),
].filter(Boolean),
};
exports.default = serverDefaultWebpack;