base-ui
Version:
A component library for Better Vue developmemt
80 lines (77 loc) • 2.31 kB
JavaScript
const path = require('path');
const VueLoaderPlugin = require('vue-loader/lib/plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const {CleanWebpackPlugin} = require('clean-webpack-plugin');
const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
const TerserPlugin = require('terser-webpack-plugin');
const babelConfig = require('./babel.config');
module.exports = {
mode: 'production',
entry: {
main: path.resolve(__dirname, './src/base-ui.js')
},
output: {
path: path.resolve(__dirname, './dist/'),
filename: 'base-ui.min.js',
library: 'base-ui', // 类库导出
libraryTarget: 'umd',
umdNamedDefine: true
},
module: {
rules: [
{
test: /\.vue$/,
exclude: /node_modules/,
loader: 'vue-loader'
},
{
test: /\.js$/,
loader: 'babel-loader',
options: {
cacheDirectory: true,
sourceMap: true,
...babelConfig
},
exclude: /node_modules/
},
{
test: /\.scss$/,
use: [
MiniCssExtractPlugin.loader,
// 'style-loader',
'css-loader',
'sass-loader'
]
},
{
test: /\.(gif|jpg|png|woff|svg|eot|ttf)\??.*$/,
loader: 'file-loader',
options: {
name: '[name].[ext]'
}
}
]
},
plugins: [
new CleanWebpackPlugin(),
new VueLoaderPlugin(),
new MiniCssExtractPlugin({
filename: 'base-ui.css'
}),
new HardSourceWebpackPlugin()
],
resolve: {
extensions: ['.js', '.vue'],
alias: {
'@': path.resolve(__dirname, './src'),
'component': path.resolve(__dirname, './src/component')
}
},
optimization: {
minimizer: [
new OptimizeCSSAssetsPlugin({}),
new TerserPlugin({})
]
}
};