722c0b978c
Should support markdown, PDF, and anything in the code viewer. Tested that it's working on web and app.
103 lines
2.8 KiB
JavaScript
103 lines
2.8 KiB
JavaScript
const path = require('path');
|
|
const webpack = require('webpack');
|
|
const merge = require('webpack-merge');
|
|
const { DefinePlugin, ProvidePlugin } = require('webpack');
|
|
const { getIfUtils, removeEmpty } = require('webpack-config-utils');
|
|
const TerserPlugin = require('terser-webpack-plugin');
|
|
|
|
const NODE_ENV = process.env.NODE_ENV || 'development';
|
|
const { ifProduction } = getIfUtils(NODE_ENV);
|
|
const UI_ROOT = path.resolve(__dirname, 'ui/');
|
|
const STATIC_ROOT = path.resolve(__dirname, 'static/');
|
|
|
|
let baseConfig = {
|
|
mode: ifProduction('production', 'development'),
|
|
devtool: ifProduction(false, 'eval-source-map'),
|
|
optimization: {
|
|
minimizer: [
|
|
new TerserPlugin({
|
|
parallel: true,
|
|
terserOptions: {
|
|
mangle: true,
|
|
},
|
|
}),
|
|
],
|
|
},
|
|
node: {
|
|
__dirname: false,
|
|
},
|
|
devServer: {
|
|
historyApiFallback: true,
|
|
},
|
|
module: {
|
|
rules: [
|
|
{
|
|
test: /\.jsx?$/,
|
|
loader: 'babel-loader',
|
|
options: {
|
|
plugins: ['@babel/plugin-syntax-dynamic-import'],
|
|
},
|
|
},
|
|
{
|
|
test: /\.s?css$/,
|
|
use: ['style-loader', 'css-loader', 'postcss-loader', 'sass-loader'],
|
|
},
|
|
{
|
|
test: /\.(png|svg|gif)$/,
|
|
use: {
|
|
loader: 'file-loader',
|
|
options: {
|
|
outputPath: 'static/img',
|
|
name: '[name].[ext]',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
test: /\.(woff|woff2)$/,
|
|
use: {
|
|
loader: 'file-loader',
|
|
options: {
|
|
outputPath: 'static/font',
|
|
},
|
|
},
|
|
},
|
|
{
|
|
test: /\.(vert|frag|glsl)$/,
|
|
use: {
|
|
loader: 'raw-loader',
|
|
},
|
|
},
|
|
],
|
|
},
|
|
// Allows imports for all directories inside '/ui'
|
|
resolve: {
|
|
modules: [UI_ROOT, 'node_modules', __dirname],
|
|
extensions: ['.js', '.jsx', '.json', '.scss'],
|
|
alias: {
|
|
config: path.resolve(__dirname, './config.js'),
|
|
// Build optimizations for 'redux-persist-transform-filter'
|
|
'redux-persist-transform-filter': 'redux-persist-transform-filter/index.js',
|
|
'lodash.get': 'lodash-es/get',
|
|
'lodash.set': 'lodash-es/set',
|
|
'lodash.unset': 'lodash-es/unset',
|
|
'lodash.pickby': 'lodash-es/pickBy',
|
|
'lodash.isempty': 'lodash-es/isEmpty',
|
|
'lodash.forin': 'lodash-es/forIn',
|
|
'lodash.clonedeep': 'lodash-es/cloneDeep',
|
|
...ifProduction({}, { 'react-dom': '@hot-loader/react-dom' }),
|
|
},
|
|
symlinks: false,
|
|
},
|
|
|
|
plugins: [
|
|
new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
|
|
new webpack.EnvironmentPlugin(['NODE_ENV']),
|
|
new DefinePlugin({
|
|
__static: `"${path.join(__dirname, 'static').replace(/\\/g, '\\\\')}"`,
|
|
'process.env.NODE_ENV': JSON.stringify(NODE_ENV),
|
|
'process.env.LBRY_API_URL': JSON.stringify(process.env.LBRY_API_URL),
|
|
}),
|
|
],
|
|
};
|
|
|
|
module.exports = baseConfig;
|