webpack配置
webpack-入口和出口
// webpack.config.js
const path = require('path');
module.exports = {
// 入口
entry: './src/index.js',
// 出口
output: {
publicPath: 'http://cdn.xxx.com/', // index.html 引入js文件前缀
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
}
}
webpack-loader
webpack默认只支持打包
.js
文件,loader的作用就是让webpack认识不同的文件
npm install file-loader
将资源文件复制到指定的打包目录
npm install url-loader -D
将图片转换成base64字符串格式
npm install style-loader -D
将CSS代码放到HTML head标签中的style标签中
npm install css-loader -D
分析CSS文件之间的应用关系,最终生成css代码
npm install sass-loader -D
处理sass语法
npm install postcss-loader -D
增加各浏览器兼容性css语法
module.exports = {
module: {
// 配置规则
rules: [
// 使用单个loader
{
test: /\.(jpg|png|gif)$/, // 匹配文件后缀
use: {
loader: 'file-loader',
options: {
name: '[name].[ext]', // [name] 源文件名 [ext] 源文件后缀 [hash] 随机生成hash
outputPath: 'images/' //输出路径
}
} // 使用指定loader来处理
},
// 处理多个loader
{
test: /.css$/
use: [
'style-loader',
'css-loader'
]// 注意使用loader的顺序会从下往上执行
},
{
test: /.scss$/
use: [
'style-loader',
{
loader: 'css-loader',
},
'postcss-loader', //postcss.config.js 中配置
'sass-loader'
]
},
]
}
}
// postcss.config.js
// npm install autoprefixer -D
module.exports = {
plugins: [
require('autoprefixer')
]
}
// package.json
{
"browserslist": [
'> 1%',
'last 2 versions'
]
}
webpack-plugins
在打包的整个生命周期中 做一些事情 不同时刻 不同节点
npm install html-webpack-plugin -d
生成HTML模板,自动引入打包后的js文件
npm install clean-webpack-plugin -d
打包前清除dist目录下的文件
import HtmlWebpackPlugin = require('html-webpack-plugin') // 生成HTML,并引入JS文件
import { CleanWebpackPlugin } = require('clean-webpack-plugin')
// plugin的使用
module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: './src/index.html' //以某个路径的index.html作为模板
}),
new CleanWebpackPlugin()
]
}
const path = require('path')
// 生成或指定HTML文件,同时自动引入打包后的文件
const HtmlWebpackPlugin = require('html-webpack-plugin')
// 每次打包前都会都会删除打包目录中的文件
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
// css-loader:
// style-loader: 创建style标签,将css-loader处理好的字符串插入到style标签中
// postcss-loader: 处理各大浏览器兼容性
// file-loader: 处理不同类型的文件
// url-loader: 会将引入的图片编码,生成dataURl并将其打包到文件中(base64格式)
module.exports = {
mode: 'development',
entry: './src/index.js',
output: {
filename: 'builder.js',
path: path.resolve(__dirname,'dist')
},
module: {
rules: [
{
test: /\.css$/,
use: [
'style-loader',
'css-loader',
'postcss-loader'
]
},
{
test: /\.(png|svg|jpe?g)$/i,
use: [
{
loader: 'url-loader',
options: {
name: '[name].[ext]',
outputPath: 'images/',
limit: 2048
}
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: './index.html'
}),
new CleanWebpackPlugin()
],
devServer: {
proxy: {
// 将 /api/user 代理到 http://localhost:3000/api/user
'/api': 'http://localhost:3000',
'/api1': {
// 将 /api1/user 代理到 http://localhost:3000/user
target: 'http://localhost:3000',
pathRewrite: { '^/api': ''}
}
}
}
}
- webpack-入口和出口
- webpack-loader
- webpack-plugins