摘要:前言對于的配置以及常用模塊大家應(yīng)該都比較熟悉,本文將說一說的一些常用插件,以及用法。如果在一個前面加了它會被定義為調(diào)用。或者被模塊的導(dǎo)出的內(nèi)容所賦值,以支持命名導(dǎo)出。用于生成的文檔的標(biāo)題默認(rèn)為將寫入的文件默認(rèn)模板的相對或絕對路徑。
前言
對于webpack的配置以及常用模塊大家應(yīng)該都比較熟悉,本文將說一說webpack的一些常用插件,以及用法。目錄
1.內(nèi)置插件
| 名稱 | 參數(shù) | 說明 | 用法 |
|---|---|---|---|
| DefinePlugin | Object | 編譯時配置的全局常量,開發(fā)模式和發(fā)布模式的構(gòu)建允許不同的行為非常有用 | DefinePlugin |
| HotModuleReplacementPlugin | - | 熱更新模塊 | |
| NoEmitOnErrorsPlugin | - | 打包出錯時不把錯誤輸出到文件 | |
| NamedModulesPlugin | - | 顯示模塊相對路徑 | |
| ProvidePlugin | - | 自動加載模塊 | ProvidePlugin |
| PrefetchPlugin | context: 目錄的絕對路徑,request: 模塊路徑 | 預(yù)加載模塊請求 |
2.其他插件
| 名稱 | 參數(shù) | 說明 | 用法 |
|---|---|---|---|
| CopyWebpackPlugin | Array | 拷貝文件夾或文件到指定目錄 | CopyWebpackPlugin |
| HtmlWebpackPlugin | - | 在編譯目錄下生成html,并將打包后的js文件插入script標(biāo)簽中 | HtmlWebpackPlugin |
| ExtractTextPlugin | - | 把打包文件中的文本提取到一個文件 | ExtractTextPlugin |
| OptimizeCSSPlugin | - | 優(yōu)化壓縮css文件 | OptimizeCSSPlugin |
| UglifyJsPlugin | - | 壓縮JavaScript文件 | UglifyJsPlugin |
| WebpackDevServer | 提供了一個簡單的 web server,并且具有 live reloading(實時重新加載) 功能 | WebpackDevServer | |
| WebpackHotMiddleware | 把 webpack 處理過的文件發(fā)送到一個 server | webpackHotMiddleware |
如果這個值是一個字符串,它會被當(dāng)作一個代碼片段來使用。
如果這個值不是字符串,它會被轉(zhuǎn)化為字符串(包括函數(shù))。
如果這個值是一個對象,它所有的 key 會被同樣的方式定義。
如果在一個 key 前面加了 typeof,它會被定義為 typeof 調(diào)用。
new webpack.DefinePlugin({
PRODUCTION: JSON.stringify(true),
VERSION: JSON.stringify("5fa3b9"),
BROWSER_SUPPORTS_HTML5: true,
TWO: "1+1",
"typeof window": JSON.stringify("object"),
"process.env.NODE_ENV": JSON.stringify(process.env.NODE_ENV)
});
console.log("Running App version " + VERSION);
if(!BROWSER_SUPPORTS_HTML5) require("html5shiv");
ProvidePlugin
自動加載模塊,而不必到處 import 或 require 。
任何時候,當(dāng) identifier 被當(dāng)作未賦值的變量時,module 就會自動被加載,并且 identifier 會被這個 module 導(dǎo)出的內(nèi)容所賦值。(或者被模塊的 property 導(dǎo)出的內(nèi)容所賦值,以支持命名導(dǎo)出(named export))。
new webpack.ProvidePlugin({
identifier: "module1",
// ...
});
new webpack.ProvidePlugin({
identifier: ["module1", "property1"],
// ...
});
對于 ES2015 模塊的 default export,你必須指定模塊的 default 屬性。
CopyWebpackPlugin拷貝文件夾或文件到指定目錄
const CopyPlugin = require("copy-webpack-plugin");
module.exports = {
plugins: [
new CopyPlugin([
{ from: "source", to: "dest" },
{
from: "other",
to: "public",
ignore: ["*.js"],
flatten: false, //僅復(fù)制文件。用于文件夾和文件同名時
},
]),
],
};https://webpack.docschina.org/plugins/copy-webpack-plugin/#ignore
查看更多
HtmlWebpackPlugin該插件將為你生成一個HTML文件,其中包括使用script標(biāo)簽中引入webpack打包js。
如果你有多個webpack入口點,他們都會在生成的HTML文件中的script標(biāo)簽內(nèi)。
如果你有任何CSS assets在webpack的輸出中(例如,利用MiniCssExtractPlugin提取 CSS),那么這些將被包含在HTML head中的標(biāo)簽內(nèi)。
new HtmlWebpackPlugin({
title: "Webpack App" //用于生成的HTML文檔的標(biāo)題 默認(rèn)為Webpack App
filename: "index.html", //將HTML寫入的文件 默認(rèn)index.html
template: "index.html", //webpack模板的相對或絕對路徑。默認(rèn)src/index.ejs
//template: path.resolve(__dirname, "../index.ejs"),
inject: true, //true || "head" || "body" || false 打包后的js引入位置 body/head
favicon: String,
meta: Object,
base: Object|String|false,
showErrors: Boolean, //將它錯誤信息寫入頁面
}),
ExtractTextPlugin
把打包文件中的文本提取到一個文件通常用于提取css
//webpack4
module: {
rules: [
{
test: /.css$/,
use: ExtractTextPlugin.extract({
fallback: "style-loader",
use: "css-loader",
publicPath: "/dist"
})
}
]
}
plugins: [
new ExtractTextPlugin({
filename: "bundle.css",
disable: false,
allChunks: true
})
]
OptimizeCSSPlugin
new OptimizeCssAssetsPlugin({
assetNameRegExp: /.optimize.css$/g,
cssProcessor: require("cssnano"),
cssProcessorPluginOptions: {
preset: ["default", { discardComments: { removeAll: true } }],
},
canPrint: true
})
UglifyJsPlugin
new UglifyJsPlugin({
uglifyOptions: {
compress: {
warnings: false
}
},
sourceMap: true,
parallel: true
}),
WebpackDevServer
提供了一個簡單的 web server,并且具有 live reloading(實時重新加載) 功能
module.exports = {
devServer: {
contentBase: "./dist"
}
};
查看詳細(xì)配置
WebpackHotMiddlewareconst express = require("express");
const webpack = require("webpack");
const webpackDevMiddleware = require("webpack-dev-middleware");
const app = express();
const config = require("./webpack.config.js");
const compiler = webpack(config);
// 告訴 express 使用 webpack-dev-middleware,
// 以及將 webpack.config.js 配置文件作為基礎(chǔ)配置
app.use(webpackDevMiddleware(compiler, {
publicPath: config.output.publicPath
}));
// 將文件 serve 到 port 3000。
app.listen(3000, function () {
console.log("Example app listening on port 3000!
");
});
也可以配合devServer
const WebpackDevServer = require("webpack-dev-server")
const compiler = webpack(webpack.conf)
hotMiddleware = webpackHotMiddleware(compiler, {
log: false,
//path
heartbeat: 2500
})
const server = new WebpackDevServer(
compiler,
{
contentBase: path.join(__dirname, "../"),
quiet: true,
before (app, ctx) {
app.use(hotMiddleware)
ctx.middleware.waitUntilValid(() => {
})
}
}
)
server.listen(3000)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://www.hztianpu.com/yun/114575.html
摘要:前言對于的配置以及常用模塊大家應(yīng)該都比較熟悉,本文將說一說的一些常用插件,以及用法。如果在一個前面加了它會被定義為調(diào)用?;蛘弑荒K的導(dǎo)出的內(nèi)容所賦值,以支持命名導(dǎo)出。用于生成的文檔的標(biāo)題默認(rèn)為將寫入的文件默認(rèn)模板的相對或絕對路徑。 前言 對于webpack的配置以及常用模塊大家應(yīng)該都比較熟悉,本文將說一說webpack的一些常用插件,以及用法。 目錄 1.內(nèi)置插件 名稱 參數(shù) 說明...
摘要:根據(jù)依賴關(guān)系,按照配置文件把模塊函數(shù)分組打包成若干個。會隨著自身的的修改,而發(fā)生變化。只需要在命令行運行時帶上參數(shù)就搞定一些插件的廢除和替換廢棄了頂替者用屬性變化壓縮優(yōu)化代碼分割,下面詳解還有一些新的插件,。 1. 前端工程化項目打包歷史 前端工程化之前的時代略過 1. 半自動執(zhí)行腳本來壓縮合并文件 自從xmlhttprequest被挖掘出來,網(wǎng)頁能夠和服務(wù)端通訊,js能做的事越來越多...
摘要:根據(jù)依賴關(guān)系,按照配置文件把模塊函數(shù)分組打包成若干個。會隨著自身的的修改,而發(fā)生變化。只需要在命令行運行時帶上參數(shù)就搞定一些插件的廢除和替換廢棄了頂替者用屬性變化壓縮優(yōu)化代碼分割,下面詳解還有一些新的插件,。 1. 前端工程化項目打包歷史 前端工程化之前的時代略過 1. 半自動執(zhí)行腳本來壓縮合并文件 自從xmlhttprequest被挖掘出來,網(wǎng)頁能夠和服務(wù)端通訊,js能做的事越來越多...
閱讀 2472·2021-09-23 11:52
閱讀 2176·2021-09-02 15:41
閱讀 3273·2019-08-30 10:47
閱讀 2151·2019-08-29 17:14
閱讀 2530·2019-08-29 16:16
閱讀 3334·2019-08-28 18:29
閱讀 3655·2019-08-26 13:30
閱讀 2799·2019-08-26 10:49