js/build-utils/webpack.common.js
const commonPaths = require('./common-paths');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const Dotenv = require('dotenv-webpack');
const tailwindcss = require('tailwindcss');
const config = {
entry: {
vendor: ['semantic-ui-react']
},
output: {
path: commonPaths.outputPath,
publicPath: '/'
},
module: {
rules: [
{
test: /\.(js)$/,
exclude: /node_modules/,
use: ['babel-loader']
},
{
test: /\.(css|scss)$/,
use: [
{
loader: 'style-loader'
},
{
loader: 'css-loader'
},
{
loader: 'sass-loader'
},
{
loader: 'postcss-loader',
options: {
postcssOptions: {
plugins: () => [require('autoprefixer')({
browsers: ['> 1%', 'last 2 versions']
})]
}
}
}
]
},
{
test: /\.(jpe?g|png|ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
use: 'base64-inline-loader?limit=1000&name=[name].[ext]'
}
]
},
optimization: {
splitChunks: {
cacheGroups: {
vendor: {
chunks: 'initial',
test: 'vendor',
name: 'vendor',
enforce: true
}
}
}
},
plugins: [
new HtmlWebpackPlugin({
template: `${commonPaths.projectRoot}/public/index.html`,
favicon: `${commonPaths.projectRoot}/public/favicon.ico`,
filename: 'index.html',
inject: true
}),
new Dotenv({path: './.env'}),
tailwindcss
]
};
module.exports = config;