antd 的样式使用了less作为开发语言,并定义了一系列全局/组件的样式变量,可以根据需求进行相应调整。
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-typescript', '@babel/preset-react'],
plugins: [
[
'import',
{
libraryName: 'antd',
style:true
},
],
],
},
},
{
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#f00',
'link-color': '#1DA57A',
'border-radius-base': '2px',
},
javascriptEnabled: true,
},
},
}
完整webpack.common配置
`module.exports = {
entry: {
index: [path.resolve(__dirname, 'src/index.tsx')],
},
output: {
path: path.resolve(__dirname, 'dist'),
filename: '[name]_[hash].js',
libraryTarget: 'umd',
},
resolve: {
alias: {
'@src': path.resolve(__dirname, './src'),
'@pages': path.resolve(__dirname, './src/pages'),
'@components': path.resolve(__dirname, './src/components'),
},
extensions: ['.js', '.json', '.ts', '.tsx'],
},
module: {
rules: [
{
test: /\.(css)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
},
],
include: [
path.resolve(__dirname, './src'),
path.resolve(__dirname, './node_modules/antd'),
path.resolve(__dirname, './node_modules/@ant-design/'),
],
},
{
test: /\.(less)$/,
use: [
MiniCssExtractPlugin.loader,
{
loader: 'css-loader',
options: {
modules: {
auto: resourcePath => {
//排除 antd样式
if (/antd/.test(resourcePath)) {
return false
}
return true
},
localIdentName: '[name]_[local]-[hash:base64:5]',
},
},
},
{
loader: 'less-loader',
options: {
lessOptions: {
modifyVars: {
'primary-color': '#f00',
'link-color': '#1DA57A',
'border-radius-base': '2px',
},
javascriptEnabled: true,
},
},
},
],
include: [
path.resolve(__dirname, './src'),
path.resolve(__dirname, './node_modules/antd'),
path.resolve(__dirname, './node_modules/@ant-design/'),
],
},
{
test: /\.(ts|tsx|js|jsx)$/,
use: [
// 'thread-loader',
{
loader: 'babel-loader',
options: {
presets: ['@babel/preset-typescript', '@babel/preset-react'],
plugins: [
[
'import',
{
libraryName: 'antd',
style:true
},
],
],
},
},
],
exclude: /node_modules/,
},
],
},
plugins: [
new MiniCssExtractPlugin({
filename: 'styles.css',
}),
new CleanWebpackPlugin(),
new HtmlWebpackPlugin({
template: path.join(__dirname, '/public/index.html'),
}),
new ProgressBarPlugin({
format: ` :msg [:bar] ${chalk.green.bold(':percent')} (:elapsed s)`,
}),
],
}
`