亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解webpack編譯速度提升之DllPlugin

 更新時(shí)間:2019年02月05日 09:35:38   作者:Wilton  
這篇文章主要介紹了webpack編譯速度提升之DllPlugin,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

一、前言

The DllPlugin and DllReferencePlugin provide means to split bundles in a way that can drastically improve build time performance.

DllPlugin 結(jié)合 DllRefrencePlugin 插件的運(yùn)用,對(duì)將要產(chǎn)出的bundle文件進(jìn)行拆解打包,可以很徹底地加快webpack的打包速度,從而在開發(fā)過(guò)程中極大地縮減構(gòu)建時(shí)間。

二、構(gòu)建效果

結(jié)論先行: 使用 DllPluginDllRefrencePlugin 進(jìn)行構(gòu)建,可以縮減50%~70%的構(gòu)建時(shí)間。

參考Demo: dllplugin-demo

2.1 使用DllPlugin前的構(gòu)建速度

 

入口文件 main.js 引入了一個(gè) jQuery

文件,圖示打包耗時(shí)2.3s。

2.2 使用DllPlugin后的構(gòu)建速度

 

使用插件后,打包耗時(shí)0.6s,單次對(duì)比,縮減時(shí)長(zhǎng)達(dá)到73%! 2.3 如何驗(yàn)證DLLPlugin已經(jīng)生效

對(duì)比上面兩張圖打包的模塊列表,圖二有一行不一樣的輸出:

[0] delegated ./src/components/jquery.js from dll-reference vendor_57c12dcd8d9774596525 42 bytes {0} [built]

這說(shuō)明,此次的打包過(guò)程,沒有重新打包 jQuery 模塊,而是直接從 vendor_57c12dcd8d9774596525 中代理了。

三、Get Started

DllPlugin作用示意圖:

 

3.1 配置webpack.dll.config.js打包靜態(tài)公共資源

3.1.1 定義webpack.dll.config.js

為了減小篇幅,只帖關(guān)鍵配置內(nèi)容,詳細(xì)訪問(wèn) dllplugin-demo

// webpack.dll.config.js
module.exports = {
  entry: {
    // 定義程序中打包公共文件的入口文件vendor.js
    vendor: [path.resolve(src, 'js', 'vendor.js')],
  },
  
  plugins: [
    new webpack.DllPlugin({
      // manifest緩存文件的請(qǐng)求上下文(默認(rèn)為webpack執(zhí)行環(huán)境上下文)
      context: process.cwd(),
      
      // manifest.json文件的輸出位置
      path: path.join(src, 'js', 'dll', '[name]-manifest.json'),
      
      // 定義打包的公共vendor文件對(duì)外暴露的函數(shù)名
      name: '[name]_[hash]'
    })
  ]
}

3.1.2 聲明靜態(tài)公共資源

在配置好 webpack.dll.config.js 文件之后,在 vendor.js 中聲明項(xiàng)目程序中所引用的靜態(tài)公共資源。

// vendor.js
// 引入自定義在項(xiàng)目目錄中的公共資源(可以在配置中聲明alias映射關(guān)系)
import 'jquery';

// or 引入npm包資源
// import 'Vue';

3.1.3 打包靜態(tài)公共資源

// cross-env模塊需要另外安裝
cross-env NODE_ENV=production webpack --config webpack.dll.config.js --colors --display-modules

根據(jù) webpack.dll.config.js ,會(huì)在指定位置生成 vendor.dll.js 文件。

3.2 配置webpack.config.js打包入口文件

生成靜態(tài)公共資源 vendor.dll.js 之后,下一步就要在入口文件中關(guān)聯(lián)引用,這項(xiàng)工作則是由 DllRefrencePlugin 完成的。

3.2.1 在webpack.config.js中關(guān)聯(lián)引用

// webpack.config.js
module.exports = {
  entry: {
    // 項(xiàng)目入口文件
    'app':path.resolve(src, 'js', 'main.js')
  },
  plugins: [
    // dllPlugin關(guān)聯(lián)配置
    new webpack.DllReferencePlugin({
      // 跟dll.config里面DllPlugin的context一致
      context: process.cwd(), 
      
      // dll過(guò)程生成的manifest文件
      manifest: require(path.join(src, 'js', "dll", "vendor-manifest.json"))
    })
  ]
}

3.2.2 項(xiàng)目入口文件中引用靜態(tài)公共資源

// main.js
// 引入的公共模塊如果在vendor中有被引用過(guò),那么編譯的時(shí)候直接使用靜態(tài)文件vendor.dll.js
import $ from 'jquery';
console.log($)

// import Vue from "Vue";
// console.log(Vue)

引入方式?jīng)]有什么不同的,跟平時(shí)正常引入即可。

3.2.3 項(xiàng)目模板中引用公共靜態(tài)資源

最后一步,在模板中注入 vendor.dll.js

<!-- index.html -->
<script type="text/javascript" src="/src/js/dll/vendor.dll.js"></script>

如此,在接下來(lái)的本地開發(fā)(dev過(guò)程)和線上構(gòu)建過(guò)程,將不再重復(fù)靜態(tài)公共資源的構(gòu)建,極大地縮減我們的構(gòu)建時(shí)間。

結(jié)語(yǔ)

以上為webpack(Version 4)使用過(guò)程中的小小總結(jié),希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論