1、完整配置
/*
webpack配置
*/
//引入路径管理模块
const path = require('path');
//引入html打包插件
const HtmlWebpackPlugin = require('html-webpack-plugin')
//提取css
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
//压缩css
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
//查看当前是哪种模式
console.log('当前模式', process.env.NODE_ENV);
//各种配置 暴露出去
module.exports = {
//入口 (单个入口 或多个入口)
entry: {
//配置分用样式
commCss: './src/less/comm/index.js',
//公用js配置
dom: './src/js/comm/dom.js',
http: './src/js/comm/http.js',
utils: './src/js/comm/utils.js',
code: './src/lib/captcha/captcha-mini.js',
iconfont: './src/lib/iconfont/index.js',
//配置每一个页面的入口
advertisement: './src/js/advertisement.js',
register: './src/js/register.js',
login: './src/js/login.js',
home: './src/js/home.js',
},
//出口
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name]-[hash:10].js', //多出口
publicPath: './'
},
//加载器
module: {
rules: [
//css
{
test: /\.css$/,
use: [
//配置插件到加载器规则中
{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader',
'postcss-loader'
]
},
//less
{
test: /\.less$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader',
'postcss-loader', // 处理css兼容性
'less-loader'
]
},
//css中图像
{
test: /\.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
name: '[hash:10].[ext]',
limit: 10 * 1024,
outputPath: 'imgs', //把图像打包到指定目录
esModule: false
}
},
//html图像
{
test: /\.html$/,
loader: 'html-loader',
},
//字体图标
{
test: /\.(eot|svg|ttf|woff|woff2)$/, //处理的格式
loader: 'file-loader',
options: {
name: '[hash:10].[ext]', //输出文件名设置
outputPath: 'fonts' //输出目录
}
},
//es6转es5
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/, //不要处理node_modules
},
]
},
plugins: [
//多个html页面
new HtmlWebpackPlugin({
template: './src/page/advertisement.html', //把那个html文件打包到dist目录中
filename: 'advertisement.html', //输出什么名字
chunks: ['advertisement', 'commCss', 'dom', 'utils'], // 当前页面所需要哪些 模块 模块引入顺序和入口设置时的先后有关
}),
new HtmlWebpackPlugin({
template: './src/page/register.html', //把那个html文件打包到dist目录中
filename: 'register.html', //输出什么名字
chunks: ['register', 'commCss', 'dom', 'utils', 'http', 'code']
}),
new HtmlWebpackPlugin({
template: './src/page/login.html', //把那个html文件打包到dist目录中
filename: 'login.html', //输出什么名字
chunks: ['login', 'commCss', 'dom', 'utils', 'http']
}),
new HtmlWebpackPlugin({
template: './src/page/home.html', //把那个html文件打包到dist目录中
filename: 'home.html', //输出什么名字
chunks: ['home', 'commCss', 'dom', 'utils', 'http', 'iconfont']
}),
//提取css
new MiniCssExtractPlugin({
filename: 'css/[name].css' //设置css输出的文件名
}),
//压缩css
new OptimizeCssAssetsWebpackPlugin()
],
//模式 development production
mode: process.env.NODE_ENV == 'dev' ? 'development' : 'production',
//开发服务器
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
publicPath: '/', //服务器根目录
compress: true,
// 启动gzip
port: 8848,
// 端口
open: true,
// 自动打开服务
openPage: 'advertisement.html' //打开哪个页面
}
}
原文地址:https://blog.csdn.net/weixin_44040867/article/details/114010932
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。