Prefácio
Intenção original: compartilhar algumas coisas úteis no trabalho Plugin
, espero que ajude a todos, não borrife se não gostar.
html-webpack-plugin
Objetivo: compactar um modelo de página no diretório dist e, por padrão, ele importará js ou css automaticamente
instalação
cnpm i html-webpack-plugin@3.2.0 -D
Configuração
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
Receba um objeto, configure-o você mesmo, veja aqui os detalhes
clean-webpack-plugin
Objetivo: usado para excluir todos os diretórios dist do pacote
instalação
cnpm i clean-webpack-plugin -D
Configuração
webpack.config.js
const {
CleanWebpackPlugin } = require('clean-webpack-plugin');
module.exports = {
plugins: [
new CleanWebpackPlugin()
]
}
extract-text-webpack-plugin
Objetivo: Extrair o css
estilo do js
arquivo e finalmente sintetizar um css
arquivo. O plug-in suporta apenas a webpack4
versão anterior. Se você estiver na webpack4
versão ou acima dela, um erro será relatado.
instalação
cnpm i extract-text-webpack-plugin -D
Configuração
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
})
]
}
Na configuração acima, os extractTextPlugin.extract
parâmetros internos fallback
são executados quando a extração não é bem-sucedida style-loader
. use
Que é usado para extrair css-loader
a conversão, plugins
cuja configuração filename
é finalmente finalizada mesclando .css
o nome do arquivo, quando allChunks
é false
a hora, apenas ao extrair o css
arquivo de inicialização para extrações true
quando css
arquivo assíncrono .
mini-css-extract-plugin
Objetivo: O plug-in é exract-text-webpack-plugin
igual ao anterior , extrai o estilo css, a única diferença é o uso, webpack4
é recomendado usá-lo após a versão do plug-in
instalação
cnpm i mini-css-extract-plugin -D
Configuração
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"
})
]
}
Na configuração acima, você pode ver o uso e a exract-text-webpack-plugin
diferença, vamos dar uma olhada na diferença.
loader
Sem configuraçãofallback
- Ao
plugin
definirfilename
o carregamento de sincronização do nome do recurso, especifique também o carregamento assíncronocss
de recursoschunkFilename
- O plug-in suporta configuração
publicPath
para definircss
o caminho de carregamento assíncrono exract-text-webpack-plugin
Apenas um arquivo css será extraído emini-css-extract-plugin
será extraído com base no arquivo assíncrono.
webpack.optimize.CommonsChunkPlugin
Objetivo: Utilizado para extrair o código comum na página, de forma a otimizar a velocidade de carregamento, este CommonsChunkPlugin
suporta apenas o Webpack4
anterior.
instalação
该插件是Webpack内置的,不需要安装。
Configuração
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"
})
]
}
Na configuração acima, extraímos e otimizamos main.js
os arquivos dependentes contidos Vue.js
nele para evitar o carregamento desse js
arquivo toda vez que você empacota ou visita outras páginas . Primeiramente, Vue
extraímos o ambiente básico, porque o ambiente básico dificilmente mudará, de modo que a otimização da extração é necessária. Em seguida, Webpack
extraia o código de tempo de execução, para que vendor
ele não mude se você empacotá-lo novamente, você pode usar o cache do navegador
otimização.SplitChunks
Objetivo: esta função é a webpack.optimize.CommonsChunkPlugin
mesma acima , mas optimization.SplitChunks
é webpack4
recomendado para uso posterior
instalação
内置的,不需要安装。
Configuração
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"
}
},
}
Na configuração acima, splitChunks
o chunks
as all
is all chunk
têm efeito por padrão apenas async
válido assíncrono.
splitChunks
Também há extração automática por padrão, e os requisitos padrão são os seguintes:
- Os módulos extraídos são do
node_module
catálogo - O módulo é maior que 30kb
- Ao carregar sob demanda, o recurso máximo solicitado é menor ou igual a 5
- O número máximo de solicitações paralelas no primeiro carregamento é menor ou igual a 3
DefinePlugin
Objetivo: Usado para injetar variáveis globais, geralmente usadas em variáveis de ambiente.
instalação
无需安装,webpack内置
Configuração
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.DefinePlugin({
STR: JSON.stringify("蛙人"),
"process.env": JSON.stringify("dev"),
name: "蛙人"
})
]
}
Na configuração acima, DefinePlugin
um objeto é recebido, e o key
valor dentro corresponde a um value
valor. Este value
valor é um snippet de código. Você pode ver o acima name
, e um erro será relatado 蛙人 is not defined
. Observe aqui que o value
valor deve ser uma variável ou um trecho de código .
ProvidePlugin
Objetivo: Utilizado para definir variáveis globais, como importar 100 páginas, importar vue
cada página só aumentará a carga de trabalho, basta webpackProvide
montar uma variável diretamente , sem necessidade de importar uma por uma.
instalação
无需安装,webpack内置
Configuração
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.ProvidePlugin({
"Vue": ["vue", "default"]
})
]
}
Na configuração acima, ProvidePlugin
um objeto key
é recebido, o valor é a variável usada, o value
primeiro parâmetro do valor é o Vue
módulo e o segundo parâmetro é o Es Module.default
atributo padrão . import
O padrão é a introdução de um Es Module
objeto próximo , que tem default
esta propriedade é o objeto de entidade
plug-in-substituto-módulo-quente
Objetivo: abrir atualização de módulo quente
instalação
无需安装,webpack内置
Configuração
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.HotModuleReplacementPlugin()
]
}
IgnorePlugin
Objetivo: Usado para filtrar arquivos empacotados e reduzir o tamanho dos arquivos empacotados.
instalação
无需安装,webpack内置
Configuração
webpack.config.js
const Webpack = require("webpack")
module.exports = {
plugins: [
new Webpack.IgnorePlugin(/.\/lib/, /element-ui/)
]
}
uglifyjs-webpack-plugin
Objetivo: Utilizado para compactar js
arquivos, visando webpack4
versões e superiores.
instalação
cnpm install uglifyjs-webpack-plugin -D
Configuração
webpack.config.js
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
module.exports = {
optimization: {
minimizer: [
new UglifyJsPlugin({
test: /\.js(\?.*)?$/i,
exclude: /node_modules/
})
]
}
}
copy-webpack-plugin
Objetivo: usado para copiar arquivos para um diretório
instalação
cnpm i copy-webpack-plugin@6.4.1 -D
Configuração
webpack.config.js
const CopyWebpackPlugin=require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyWebpackPlugin({
patterns: [
{
from: "./main.js",
to: __dirname + "/dist/js",
toType: "dir"
}
]
})
]
}
Na configuração acima, será main.js
copiado para o dist
diretório js
, o toType
padrão file
pode ser definido como dir
, porque meu catálogo de dist
diretório não js
.
Optimize-css-assets-webpack-plugin
Objetivo: usado para compactar o estilo css
instalação
cnpm i optimize-css-assets-webpack-plugin -D
Configuração
webpack.config.js
const OptimizeCssAssetsWebpackPlugin = require("optimize-css-assets-webpack-plugin")
module.exports = {
plugins: [
new OptimizeCssAssetsWebpackPlugin(),
]
}
imagemin-webpack-plugin
Objetivo: usado para compactar imagens
instalação
cnpm i imagemin-webpack-plugin -D
Configuração
webpack.config.js
const ImageminPlugin = require('imagemin-webpack-plugin').default
module.exports = {
plugins: [
new ImageminPlugin({
test: /\.(jpe?g|png|gif|svg)$/i
})
]
}
friendly-errors-webpack-plugin
Objetivo: embelezar o console, para solicitar erros também. Não queremos que nosso terminal inicie bagunçado, como este
instalação
cnpm i friendly-errors-webpack-plugin -D
Configuração
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
}
Depois de executar o código acima. Veja os seguintes resultados
obrigado
Obrigado por ler este artigo. Espero que seja útil para você. Se você tiver alguma dúvida, corrija-me.
Eu sou um homem-rã (✿◡‿◡), se você acha que está tudo bem, por favor, goste ❤.
Escrever não é fácil, "Curtir" + "Assistir" + "Repetir" Obrigado pelo seu apoio❤
Bons artigos no passado
"Ensina como escrever um componente Vue para publicar no npm e pode ser usado fora da cadeia"
"Compartilhe 12 carregadores comumente usados no Webpack"
"Fale sobre o que são CommonJs e Es Module e suas diferenças"
"Mapa que facilita a compreensão da estrutura de dados"
"Você conhece todas as dicas de JavaScript usadas nesses trabalhos?" 》