const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const nodeExternals = require('webpack-node-externals');
+const CopyPlugin = require('copy-webpack-plugin');
const path = require('path');
+const webpack = require('webpack');
+
+const banner = `
+ hash:[hash], chunkhash:[chunkhash], name:[name], filebase:[filebase], query:[query], file:[file]
+ Source code: https://github.com/LemmyNet/lemmy-ui
+ Created by dessalines
+ @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL v3.0
+ `;
module.exports = function (env, _) {
const base = {
- // mode: "production",
- mode: 'development',
+ // mode is set by package.json flags
entry: './src/server/index.tsx', // Point to main file
output: {
path: path.resolve(process.cwd(), 'dist'),
rules: [
{
test: /\.(scss|css)$/i,
- use: [
- MiniCssExtractPlugin.loader,
- 'css-loader',
- {
- loader: 'postcss-loader', // Run post css actions
- options: {
- plugins: function () {
- // post css plugins, can be exported to postcss.config.js
- return [require('precss'), require('autoprefixer')];
- },
- },
- },
- 'sass-loader',
- ],
+ use: [MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader'],
},
{
test: /\.(js|jsx|tsx|ts)$/, // All ts and tsx files will be process by
new MiniCssExtractPlugin({
filename: 'styles/styles.css',
}),
+ new CopyPlugin({
+ patterns: [{ from: './src/assets', to: './assets' }],
+ }),
+ new webpack.BannerPlugin({
+ banner,
+ }),
],
};
// server-specific configuration
if (env.platform === 'server') {
base.target = 'node';
- base.externals = [nodeExternals()];
+ base.externals = [nodeExternals(), 'inferno-helmet'];
}
// client-specific configurations
if (env.platform === 'client') {