Prefacio
Intención original: compartir algunas cosas útiles en el trabajo Plugin
, espero que sea de ayuda para todos, no rocíe si no le gusta.
complemento-html-webpack
Propósito: empaquete una plantilla de página en el directorio dist y, por defecto, importará automáticamente js o css
instalación
cnpm i html-webpack-plugin@3.2.0 -D
Configuración
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>首页</title>
</head>
<body>
<div id="app"></div>
</body>
</html>
webpack.config.js
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
plugins: [
new HtmlWebpackPlugin({
template: './index.html', // 以咱们本地的index.html文件为基础模板
filename: "index.html", // 输出到dist目录下的文件名称
}),
]
}
HtmlWebpackPlugin
Reciba un objeto, configúrelo usted mismo, consulte aquí para obtener más detalles
plugin de clean-webpack
Propósito: se utiliza para eliminar todos los directorios dist de paquetes
instalación
cnpm i clean-webpack-plugin -D
Configuración
webpack.config.js
const {
CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
plugins: [
new CleanWebpackPlugin()
]
}
extraer-texto-paquete-web-plugin
Propósito: Extraer el css
estilo del js
archivo y finalmente sintetizar un css
archivo. El complemento solo es compatible con la webpack4
versión anterior. Si actualmente estás en webpack4
la versión o por encima de ella, se informará un error.
instalación
cnpm i extract-text-webpack-plugin -D
Configuración
webpack.config.js
const extractTextPlugin = require('extract-text-webpack-plugin');
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: extractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader"
})
}
]
},
plugins: [
new extractTextPlugin({
filename: "[name].css",
allChunks: true
})
]
}
En la configuración anterior, los extractTextPlugin.extract
parámetros internos fallback
se ejecutan cuando la extracción no tiene éxito style-loader
. use
Que se utiliza para extraer css-loader
la conversión, plugins
cuya configuración filename
finalmente se termina fusionando .css
el nombre del archivo, cuando allChunks
es false
el momento, solo al extraer el css
archivo de inicialización para true
extractos cuando el css
archivo asincrónico .
mini-css-extract-plugin
Propósito: El complemento es exract-text-webpack-plugin
el mismo que el anterior , extrae el estilo css, la única diferencia es el uso, webpack4
se recomienda usarlo después de la versión del complemento
instalación
cnpm i mini-css-extract-plugin -D
Configuración
webpack.config.js
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
module.exports = {
module: {
rules: [
{
test: /\.css$/,
use: [
MiniCssExtractPlugin.loader,
"css-loader"
]
}
]
},
plugins: [
new MiniCssExtractPlugin({
filename: "css/[name].css",
chunkFilename: "css/[name].css"
})
]
}
En la configuración anterior, puede ver el uso y la exract-text-webpack-plugin
diferencia, echemos un vistazo a la diferencia.
loader
Sin configuraciónfallback
- Al
plugin
configurarfilename
la carga de sincronización el nombre del recurso, también especifique la carga asincrónicacss
de recursoschunkFilename
- El complemento admite la configuración
publicPath
para establecercss
la ruta de carga asincrónica exract-text-webpack-plugin
Solo se extraerá un archivo css y semini-css-extract-plugin
extraerá en función del archivo asincrónico.
webpack.optimize.CommonsChunkPlugin
Finalidad: Se utiliza para extraer el código común en la página, de manera que se optimice la velocidad de carga, esta CommonsChunkPlugin
solo soporta la Webpack4
anterior.
instalación
该插件是Webpack内置的,不需要安装。
Configuración
main.js
import Vue from "vue"
webpack.config.js
module.exports = {
entry: {
main: "./main.js",
vendor: ["Vue"]
},
plugins: [
new Webpack.optimize.CommonsChunkPlugin({
name: "vendor",
filename: "[name].js"
}),
new Webpack.optimize.CommonsChunkPlugin({
name: "common",
chunks: ["vendor"],
filename: "[name].js"
})
]
}
En la configuración anterior, extraemos y optimizamos main.js
los archivos dependientes en Vue.js
él para evitar cargar este js
archivo cada vez que empaqueta o visita otras páginas.Primero Vue
extraemos el entorno básico, porque el entorno básico apenas cambiará, por lo que la optimización de la extracción es necesaria. Luego, Webpack
extraiga el código de tiempo de ejecución, para que vendor
no cambie si lo empaqueta de nuevo, puede usar la caché del navegador
optimización.
Propósito: Esta función es la webpack.optimize.CommonsChunkPlugin
misma que anteriormente , pero optimization.SplitChunks
se webpack4
recomienda utilizar más tarde
instalación
内置的,不需要安装。
Configuración
main.js
import Vue from "vue"
console.log(Vue)
import("./news")
news.js
import Vue from "vue"
console.log(Vue)
webpack.config.js
module.exports = {
mode: "development",
entry: {
main: "./main.js"
},
output: {
filename: "[name].js",
path: __dirname + "/dist"
},
optimization: {
splitChunks: {
chunks: "all"
}
},
}
En la configuración anterior, splitChunks
el chunks
como all
es todo chunk
toma efecto por defecto sólo async
asíncrono válida.
splitChunks
También hay extracción automática de forma predeterminada, y los requisitos predeterminados son los siguientes:
- Los módulos extraídos son del
node_module
catálogo - El módulo tiene un tamaño superior a 30 kb
- Cuando se carga bajo demanda, el recurso máximo solicitado es menor o igual a 5
- El número máximo de solicitudes paralelas en la primera carga es menor o igual a 3
DefinePlugin
Propósito: Se utiliza para inyectar variables globales, generalmente se usa en variables de entorno.
instalación
无需安装,webpack内置
Configuración
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.DefinePlugin({
STR: JSON.stringify("蛙人"),
"process.env": JSON.stringify("dev"),
name: "蛙人"
})
]
}
En la configuración anterior, DefinePlugin
se recibe un objeto y el key
valor en el interior corresponde a un value
valor. Este value
valor es un fragmento de código. Puede ver el anterior name
y se informará un error 蛙人 is not defined
. Tenga en cuenta aquí que el value
valor debe ser una variable o un fragmento de código .
ProvidePlugin
Propósito: Se usa para definir variables globales, como importar 100 páginas, importar vue
cada página solo aumentará la carga de trabajo, solo webpackProvide
monte una variable directamente , sin necesidad de importar una por una.
instalación
无需安装,webpack内置
Configuración
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.ProvidePlugin({
"Vue": ["vue", "default"]
})
]
}
En la configuración anterior, se ProvidePlugin
recibe un objeto, el key
valor es la variable utilizada, el value
primer parámetro del valor es el Vue
módulo y el segundo parámetro es el Es Module.default
atributo predeterminado . import
El valor predeterminado es la introducción de un Es Module
objeto que viene , que tiene default
esta propiedad es el objeto de entidad
complemento-de-reemplazo-de-módulo-caliente
Propósito: actualización de módulo caliente abierto
instalación
无需安装,webpack内置
Configuración
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.HotModuleReplacementPlugin()
]
}
IgnorePlugin
Propósito: se utiliza para filtrar archivos empaquetados y reducir el tamaño de los archivos empaquetados.
instalación
无需安装,webpack内置
Configuración
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.IgnorePlugin(/.\/lib/, /element-ui/)
]
}
uglifyjs-webpack-plugin
Propósito: Se utiliza para comprimir js
archivos, apuntando a webpack4
versiones y superiores.
instalación
cnpm install uglifyjs-webpack-plugin -D
Configuración
webpack.config.js
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
optimization: {
minimizer: [
new UglifyJsPlugin({
test: /\.js(\?.*)?$/i,
exclude: /node_modules/
})
]
}
}
copy-webpack-plugin
Propósito: se utiliza para copiar archivos a un directorio.
instalación
cnpm i copy-webpack-plugin@6.4.1 -D
Configuración
webpack.config.js
const CopyWebpackPlugin=require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyWebpackPlugin({
patterns: [
{
from: "./main.js",
to: __dirname + "/dist/js",
toType: "dir"
}
]
})
]
}
En la configuración anterior, se main.js
copiará al dist
directorio js
, el toType
valor predeterminado file
puede establecerse en dir
, porque mi catálogo dist
no tiene directorio js
.
optimizar-css-assets-webpack-plugin
Propósito: se utiliza para comprimir el estilo CSS
instalación
cnpm i optimize-css-assets-webpack-plugin -D
Configuración
webpack.config.js
const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin")
module.exports = {
plugins: [
new OptimizeCssAssetsWebpackPlugin(),
]
}
imagemin-webpack-plugin
Propósito: utilizado para comprimir imágenes.
instalación
cnpm i imagemin-webpack-plugin -D
Configuración
webpack.config.js
const ImageminPlugin = require('imagemin-webpack-plugin').default
module.exports = {
plugins: [
new ImageminPlugin({
test: /\.(jpe?g|png|gif|svg)$/i
})
]
}
amigable-errores-complemento-webpack
Propósito: embellecer la consola, provocar bien los errores. No queremos que nuestra terminal se inicie desordenada, como esta
instalación
cnpm i friendly-errors-webpack-plugin -D
Configuración
webpack.config.js
const FriendlyErrorsWebpackPlugin = require('friendly-errors-webpack-plugin');
const devServer = {
publicPath: "/",
port: 9527,
host: "localhost",
open: true,
hotOnly: true,
stats: 'errors-only'
}
module.exports = {
plugins: [
new FriendlyErrorsWebpackPlugin({
compilationSuccessInfo: {
notes: ['蛙人你好,系统正运行在http://localhost:' + devServer.port]
},
clearConsole: true,
})
],
devServer
}
Después de ejecutar el código anterior. Ver los siguientes resultados
agradecer
Gracias por leer este artículo. Espero que te sea útil. Si tienes alguna pregunta, corrígeme.
Soy un hombre rana (✿◡‿◡), si crees que está bien, dale me gusta ❤.
Escribir no es fácil, "Me gusta" + "Viendo" + " Volver a publicar " Gracias por su apoyo❤
Buenos artículos en el pasado
"Comparta 12 cargadores de uso común en Webpack"
"Hable sobre qué son CommonJs y Es Module y su diferencia"
"Mapa que lo lleva a comprender fácilmente la estructura de datos"
"¿Conoce todos los consejos de JavaScript que se utilizan en estos trabajos?" 》