hedera-web/webpack.config.js

118 lines
2.3 KiB
JavaScript
Raw Normal View History

2022-05-21 21:31:56 +00:00
const path = require('path');
const webpack = require('webpack');
const AssetsWebpackPlugin = require('assets-webpack-plugin');
const merge = require('webpack-merge').merge;
const wpConfig = require('./webpack.config.json');
2016-09-27 19:31:46 +00:00
2019-02-05 13:11:40 +00:00
let env = process.env.NODE_ENV || 'development';
2022-05-21 21:31:56 +00:00
const devMode = env === 'development';
const outputPath = path.join(__dirname, wpConfig.buildDir);
const publicPath = '/' + wpConfig.buildDir + '/';
2016-09-24 14:32:31 +00:00
2022-05-21 21:31:56 +00:00
const baseConfig = {
entry: wpConfig.entry,
2019-02-05 13:11:40 +00:00
mode: devMode ? 'development' : 'production',
2016-10-04 15:27:49 +00:00
output: {
path: outputPath,
publicPath: publicPath
2016-10-04 15:27:49 +00:00
},
module: {
rules: [
2022-05-21 21:31:56 +00:00
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
}, {
test: /\.yml$/,
use: ['json-loader', 'yaml-loader']
}, {
test: /\.xml$/,
use: 'raw-loader'
}, {
test: /\.ttf$/,
type: 'asset/resource'
}, {
test: /\.scss$/,
use: [
'style-loader',
'css-loader',
{
loader: 'sass-loader',
options: {
sourceMap: true
}
}
]
}
2016-09-26 09:28:47 +00:00
]
2016-10-04 15:27:49 +00:00
},
resolve: {
modules: [
__dirname +'/js',
__dirname,
'node_modules',
'/usr/lib/node_modules'
]
2016-10-04 15:27:49 +00:00
},
node: {
__dirname: true
},
2016-09-26 09:28:47 +00:00
plugins: [
2019-02-05 13:11:40 +00:00
new AssetsWebpackPlugin({
path: outputPath
}),
2017-12-18 13:35:16 +00:00
new webpack.DefinePlugin({
_DEV_MODE: devMode,
_DEV_SERVER_PORT: wpConfig.devServerPort,
2022-05-05 13:56:17 +00:00
_PUBLIC_PATH: JSON.stringify(publicPath)
})
2016-10-11 14:45:10 +00:00
],
2022-05-05 13:56:17 +00:00
optimization: {
runtimeChunk: true,
splitChunks: {
chunks: 'all',
}
},
watchOptions: {
ignored: /node_modules/
}
2016-09-24 14:32:31 +00:00
};
2016-09-27 19:31:46 +00:00
2022-05-21 21:31:56 +00:00
const prodConfig = {
output: {
filename: '[name].[chunkhash].js',
chunkFilename: 'chunk.[id].[chunkhash].js'
},
2022-05-21 21:31:56 +00:00
optimization: {
moduleIds: 'hashed'
},
devtool: 'source-map'
};
2022-05-21 21:31:56 +00:00
const devConfig = {
output: {
filename: '[name].js',
chunkFilename: 'chunk.[id].js'
},
2022-05-21 21:31:56 +00:00
optimization: {
moduleIds: 'named'
},
devServer: {
host: '0.0.0.0',
2022-05-21 21:31:56 +00:00
static: __dirname,
port: wpConfig.devServerPort,
2022-05-05 13:56:17 +00:00
headers: {'Access-Control-Allow-Origin': '*'},
2022-05-21 21:31:56 +00:00
//stats: { chunks: false },
2022-05-05 13:56:17 +00:00
proxy: {
'/api': 'http://localhost:3000',
2022-05-09 13:52:29 +00:00
'/': {
target: 'http://localhost/projects/hedera-web',
bypass: (req) => req.path !== '/' ? req.path : null
}
2022-05-05 13:56:17 +00:00
}
},
devtool: 'eval'
};
2022-05-21 21:31:56 +00:00
const mrgConfig = devMode ? devConfig : prodConfig;
2017-12-18 13:35:16 +00:00
module.exports = merge(baseConfig, mrgConfig);