UNPKG

burdy

Version:

Open Source Headless Platform

138 lines (137 loc) 5.58 kB
"use strict"; 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;