含注释的讲解
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin');
module.exports = {
entry: './src/js/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].js',
publicPath: './'
},
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader']
},
{
test: /.less$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader', 'less-loader']
},
{
test: /.(jpg|png|gif)$/,
loader: 'url-loader',
options: {
name: '[hash:16].[ext]',
limit: 70 * 1024,
esModule: false,
outputPath: 'img'
}
},
{
test: /.html$/,
loader: 'html-loader'
},
{
test: /.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader',
options: {
outputPath: 'fonts'
}
},
{
test: /\.js$/,
loader: 'babel-loader',
exclude: /node_modules/
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html'
}),
new MiniCssExtractPlugin({
filename: 'css/[name].css'
}),
new OptimizeCssAssetsWebpackPlugin()
],
mode: process.env.NODE_ENV,
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
compress: true,
port: 8080,
open: true,
open:'chrome'
publicPath: '/',
openPage: 'index.html',
},
target: 'web',
}
纯净版
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const OptimizeCssAssetsWebpackPlugin = require('optimize-css-assets-webpack-plugin')
module.exports = {
entry: './src/js/index.js',
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'js/[name].js',
publicPath: './'
},
module: {
rules: [
{
test: /\.css$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader']
},
{
test: /\.less$/,
use: [{
loader: MiniCssExtractPlugin.loader,
options: {
publicPath: '../'
}
}, 'css-loader', 'less-loader']
},
{
test: /\.(png|jpg|gif|jpeg|webp)$/i,
loader: 'url-loader',
options: {
name: '[hash:16].[ext]',
limit: 30 * 1024,
esModule: false,
outputPath: 'img'
}
},
{
test: /\.html$/,
loader: 'html-loader'
},
{
test: /\.(eot|svg|ttf|woff|woff2)$/,
loader: 'file-loader',
options: {
outputPath: 'fonts'
}
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html',
filename: 'index.html'
}),
new MiniCssExtractPlugin({
filename: 'css/[name].css'
}),
new OptimizeCssAssetsWebpackPlugin(),
],
mode: 'development',
devServer: {
contentBase: path.resolve(__dirname, 'dist'),
compress: true,
port: 80,
open: true,
open: 'chrome',
publicPath: '/',
openPage: 'index.html',
},
target: 'web',
}