lowdefy/packages/layout/webpack.config.js

93 lines
2.3 KiB
JavaScript

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './demo/index',
mode: 'development',
devServer: {
contentBase: path.join(__dirname, 'dist'),
port: 3001,
},
// webpack 5 support polyfills
resolve: {
alias: {
path: require.resolve('path-browserify'),
process: require.resolve('process/browser'),
buffer: require.resolve('buffer'),
},
fallback: { buffer: false },
},
module: {
rules: [
// TODO: FIXME: do NOT webpack 5 support with this
// x-ref: https://github.com/webpack/webpack/issues/11467
// waiting for babel fix: https://github.com/vercel/next.js/pull/17095#issuecomment-692435147
{
test: /\.m?js/,
resolve: {
fullySpecified: false,
},
},
{
test: /\.jsx?$/,
loader: 'babel-loader',
options: {
presets: ['@babel/preset-react'],
},
},
{
test: /\.ya?ml$/,
type: 'json',
use: 'yaml-loader',
},
{
test: /\.css$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader', // translates CSS into CommonJS
},
],
},
{
test: /\.less$/,
use: [
{
loader: 'style-loader',
},
{
loader: 'css-loader', // translates CSS into CommonJS
},
{
loader: 'less-loader', // compiles Less to CSS
options: {
lessOptions: {
modifyVars: {
'@primary-color': '#697a8c',
'@link-color': '#1890ff',
'@layout-header-background': '#30383f',
'@layout-sider-background': '#30383f',
'@menu-dark-submenu-bg': '#21262b',
},
javascriptEnabled: true,
},
},
},
],
},
],
},
plugins: [
new CleanWebpackPlugin(),
new webpack.ProvidePlugin({ Buffer: ['buffer', 'Buffer'] }),
new webpack.ProvidePlugin({ process: ['process'] }),
new HtmlWebpackPlugin({
template: './public/index.html',
}),
],
};