最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談webpack構(gòu)建工具配置和常用插件總結(jié)

 更新時(shí)間:2020年05月11日 14:25:24   作者:self_challenge  
這篇文章主要介紹了淺談webpack構(gòu)建工具配置和常用插件總結(jié),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

webpack構(gòu)建工具已經(jīng)火了好幾年,也是當(dāng)下狠火狠方便的構(gòu)建工具,我們沒(méi)有理由不去學(xué)習(xí)。既然選擇webpack就要跟著時(shí)代走,我們要追隨大牛的步伐,大牛等等我。

一、webpack基礎(chǔ)

  1. 在根目錄使用npm init 命令創(chuàng)建package.json,創(chuàng)建過(guò)程中一路回車(chē)。
  2. 本地安裝webpack命令:npm install webpack webpack-cli --save-dev 安裝成功后寫(xiě)入package.js的devDependencies中,可以通過(guò) npm node_modules/.bin/webpack -v 命令查看它的版本。
  3. 全局安裝npm install -g webpack 不推薦全局安裝 webpack。它會(huì)把你的項(xiàng)目鎖定全局安裝的版本,也可能導(dǎo)致不同的webpack版本中構(gòu)建失敗。

靜態(tài)資源文件目錄

  • ​ – src [ 項(xiàng)目源文件目錄 ]
  • ​ – dist [ 打包文件目錄 ]
  • ​ – webpack.config.js [ webpack配置文件 ]
  • ​ – package.json [ NPM包管理配置文件 ]
  • ​ – node_modules [ 項(xiàng)目中的依賴存放目錄 ]

二、webpack.config.js

const webpack = require('webpack');
module.exports = {
 mote:"development",//指當(dāng)前的環(huán)境
 /*
 development:開(kāi)發(fā)環(huán)境
 production:生產(chǎn)環(huán)境
 none:不做任何處理
 */
 //入口文件,如果需求多個(gè)入口可改為對(duì)象
  entry: './src/index.js',
  /*
  hot配置是否啟用模塊的熱替換功能,devServer的默認(rèn)行為是在發(fā)現(xiàn)代碼被改后通過(guò)自動(dòng)刷新整個(gè)頁(yè)面來(lái)做到事實(shí)預(yù)覽,然后設(shè)置hot后,
  會(huì)在不刷新整個(gè)頁(yè)面的情況下用新模塊替換老模塊來(lái)做到實(shí)時(shí)更新。
  如果選用hot:true方式來(lái)達(dá)到熱更新的效果需要引用webpack.HotModuleReplacementPlugin插件配合達(dá)到你需要的效果,另外推薦一
  種簡(jiǎn)便的方式在package.json中scripts設(shè)置如下
  "scripts": {
   "start": "webpack-dev-server --hot --inline",
  },
  */
  // 服務(wù)器環(huán)境
  devServer: {
   hot: true, //建議使用第二種方案 啟動(dòng)服務(wù)使用命令 npm run start
   port:"8080",//端口默認(rèn)8080,可以自行設(shè)置
   host:"192.168.xx.xx",
   /*
   host配置devServer服務(wù)監(jiān)聽(tīng)的地址,也可以使用localhost進(jìn)行訪問(wèn) 瀏覽器輸入192.168.xx.xx/index.html
   簡(jiǎn)便方法在package.json中設(shè)置如下
   "scripts": {
   "start": "webpack-dev-server --hot --inline ",
   },
   */
   
  },
  //插件
  plugins: [
   //熱加載插件
   new webpack.HotModuleReplacementPlugin(), 
  ],
  //輸出
  output: {
   //filename:輸出的文件名,可以自定義一些規(guī)則
   filename: '[name].bundle.js',
   //path,配置輸出文件存放在本地的目錄
   path: path.resolve(__dirname, 'dist')
  }
 };
 

三、插件

1、HtmlWebpackPlugin

const HtmlWebpackPlugin = require('html-webpack-plugin')
 plugins: [
  new HtmlWebpackPlugin({ // 打包輸出HTML
   title: 'Hello World',//文件的標(biāo)題
   minify: { //minify 的作用是對(duì) html 文件進(jìn)行壓縮
    removeComments: true, // 移除HTML中的注釋
    collapseWhitespace: true, // 刪除空白符與換行符
    minifyCSS: true, // //是否壓縮html里的css 默認(rèn)值false;
    caseSensitive: true, //是否對(duì)大小寫(xiě)敏感,默認(rèn)false
    ollapseWhitespace: true, //是否去除空格,默認(rèn)false
    minifyJS: true, //是否壓縮html里的js
    removeAttributeQuotes: true, //是否移除屬性的引號(hào) 默認(rèn)false
    removeComments: true, //是否移除注釋 默認(rèn)false
    emoveCommentsFromCDATA: true, //從腳本和樣式刪除的注釋 默認(rèn)false
    emoveEmptyAttributes: true, //是否刪除空屬性,默認(rèn)false
    removeRedundantAttributes: true, //刪除多余的屬性
    removeScriptTypeAttributes: true, //刪除script的類型屬性,在h5下面script的type默認(rèn)值:text/javascript 默認(rèn)值false
   },
   filename: 'index.html', //輸出的html的文件名稱
   template: 'index.html', //html模板在的文件路徑
   hash: true,//hash作用是給生成的js文件一個(gè)獨(dú)特的hash值,默認(rèn)值為false 被構(gòu)建過(guò)后的html引用js效果如下
   // <script type=text/javascript src=bundle.js?22b9692e22e7be37b57e></script>
  }),
 ]
 

2、CleanWebpackPlugin

const { CleanWebpackPlugin } = require('clean-webpack-plugin');
plugins: [
  //該插件主要用于自動(dòng)刪除webpack里dist目錄中已不需要的文件
  new CleanWebpackPlugin()
]
 

官方介紹:

By default, this plugin will remove all files inside webpack's output.path directory, as well as all unused webpack assets after every successful rebuild

3、ExtractTextWebpackPlugin

先把我們需要的東西下載好

npm install webpack css-loader style-loader extract-text-webpack-plugin --save-dev

首先配置webpack,先不使用插件完成

module.exports = {
 module : {
    rules: [
      {
        test: /\.css$/,
        use:[
          { loader: "style-loader" },
          { loader: "css-loader" }
        ]
      }
    ]
  }
}

配置好之后在js入口文件中引入樣式文件,打包查看打包結(jié)果bundle.js,會(huì)發(fā)現(xiàn)css被打包到了js里面,以字符串的形式存在。如果index.html中已引入打包后的bundle.js,使用瀏覽器打開(kāi)index.html文件會(huì)發(fā)現(xiàn)css以style的形式被插到了head當(dāng)中。

2.使用插件

const path = require('path');
const ExtractTextPlugin = require("extract-text-webpack-plugin");
const HtmlWebpackPlugin = require('html-webpack-plugin');
module.exports = {
 module : {
  rules: [
    {
      test: /\.css$/,
      use : ExtractTextPlugin.extract({
       fallback: "style-loader",
        use: "css-loader"
      })
    }
    /*
  use: 指需要什么樣的loader去編譯文件
  fallback: 編譯后用什么loader來(lái)提取css文件
  */
   ]
 },
 plugins: [
   new ExtractTextPlugin("styles.css"),
   new HtmlWebpackPlugin({ // 關(guān)于HtmlWebpackPlugin上文有提到
      title: 'extract-text-webpack-plugin',
      filename: 'index.html',
      template: path.resolve(__dirname, 'index.html'),
      inject : 'head'
    })
 ]
}

以上內(nèi)容配置好之后打包查看,可以發(fā)現(xiàn)css文件以link的方式被引在index.html的head中。期間配合HtmlWebpackPlugin插件自動(dòng)插入index.html中

到此這篇關(guān)于淺談webpack構(gòu)建工具配置和常用插件總結(jié)的文章就介紹到這了,更多相關(guān)webpack構(gòu)建工具配置和常用插件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • JavaScript超過(guò)Number最大值的解決方案

    JavaScript超過(guò)Number最大值的解決方案

    在JavaScript中,Number類型是基于IEEE754雙精度浮點(diǎn)數(shù)標(biāo)準(zhǔn)表示的,雖然在常見(jiàn)場(chǎng)景下非常高效,但在處理大數(shù)據(jù)時(shí),Number類型存在顯著的精度限制,在這些場(chǎng)景中,如何精確處理大數(shù)據(jù)和超大數(shù)字成為了一個(gè)重要的問(wèn)題,所以本文給大家介紹了JavaScript超過(guò)Number最大值的解決方案
    2025-01-01
  • js運(yùn)動(dòng)事件函數(shù)詳解

    js運(yùn)動(dòng)事件函數(shù)詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript運(yùn)動(dòng)事件函數(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • JS將光標(biāo)聚焦在文本最后的實(shí)現(xiàn)代碼

    JS將光標(biāo)聚焦在文本最后的實(shí)現(xiàn)代碼

    這篇文章主要介紹了JS將光標(biāo)聚焦在文本最后的方法,需要的朋友可以參考下
    2014-03-03
  • JavaScript中的對(duì)象和原型(一)

    JavaScript中的對(duì)象和原型(一)

    大家都知道在js中沒(méi)有類的概念,因此它的對(duì)象也與基于類的語(yǔ)言中的對(duì)象有所不同。所以大家要了解面向?qū)ο螅紫纫私鈐s中的對(duì)象和原型,下面本文給大家介紹JavaScript中的對(duì)象和原型(一)知識(shí),一起看下吧
    2016-08-08
  • JavaScript基礎(chǔ)知識(shí)及常用方法總結(jié)

    JavaScript基礎(chǔ)知識(shí)及常用方法總結(jié)

    JAVASCRIPT是AJAX技術(shù)中不可或缺的一部分,所以想學(xué)好AJAX以及現(xiàn)在流行的AJAX框架,學(xué)好JAVASCRIPT是最重要的,通過(guò)本篇文章給大家介紹javascript基礎(chǔ)知識(shí)及常用方法總結(jié),對(duì)js基礎(chǔ)知識(shí)及常用方法相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧
    2016-01-01
  • JavaScript使用setInterval()函數(shù)實(shí)現(xiàn)簡(jiǎn)單輪詢操作的方法

    JavaScript使用setInterval()函數(shù)實(shí)現(xiàn)簡(jiǎn)單輪詢操作的方法

    這篇文章主要介紹了JavaScript使用setInterval()函數(shù)實(shí)現(xiàn)簡(jiǎn)單輪詢操作的方法,以實(shí)例形式分析了輪詢操作的原理與javascript實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-02-02
  • js實(shí)現(xiàn)表單Radio切換效果的方法

    js實(shí)現(xiàn)表單Radio切換效果的方法

    這篇文章主要介紹了js實(shí)現(xiàn)表單Radio切換效果的方法,涉及javascript實(shí)現(xiàn)頁(yè)面元素的隱藏與顯示及復(fù)選框的遍歷技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-08-08
  • 詳解V8是如何執(zhí)行一段JavaScript代碼原理

    詳解V8是如何執(zhí)行一段JavaScript代碼原理

    這篇文章主要為大家介紹了詳解V8是如何執(zhí)行一段JavaScript代碼原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • javascript中動(dòng)態(tài)函數(shù)用法實(shí)例分析

    javascript中動(dòng)態(tài)函數(shù)用法實(shí)例分析

    這篇文章主要介紹了javascript中動(dòng)態(tài)函數(shù)用法,實(shí)例分析了動(dòng)態(tài)函數(shù)的定義方法與使用技巧,需要的朋友可以參考下
    2015-05-05
  • javascript Firefox與IE 替換節(jié)點(diǎn)的方法

    javascript Firefox與IE 替換節(jié)點(diǎn)的方法

    Firefox 與 IE 替換節(jié)點(diǎn)的方法
    2010-02-02

最新評(píng)論

榕江县| 桃江县| 梁平县| 四平市| 延川县| 黄陵县| 文登市| 通化县| 山阳县| 凤冈县| 铜山县| 探索| 石景山区| 九寨沟县| 临澧县| 通河县| 莱芜市| 延川县| 常熟市| 东山县| 榆社县| 左贡县| 本溪市| 深水埗区| 来安县| 武宁县| 松桃| 康马县| 南城县| 务川| 高尔夫| 阳山县| 运城市| 囊谦县| 镇平县| 扶绥县| 莲花县| 樟树市| 龙岩市| 吴忠市| 哈巴河县|