webpack4用法總結(jié)

1. webpack學(xué)習(xí)之entry潮改,output

entry: {
    vendor:['jquery'],
    commons:["./common/util.a.js","./common/util.b.js"],
    main:"./index.js"
},
output:{
    filename:"./[name].[chunkhash:8].js", //    path: __dirname + '/out',
    publicPath: ""   //靜態(tài)資源公共路徑
},

entry : 可以設(shè)置為字符串狭郑,數(shù)組,或者對象汇在,作者在這里用常用的對象形式翰萨,main一般作為js入口文件,vendor一般放第三方庫和項目依賴糕殉,commons一般放一些util文件等亩鬼。
output :entry設(shè)置幾個入口,這邊就會有幾個出口文件阿蝶,設(shè)置多個文件出口雳锋,可以后面加上hash,如果想輸出到不用文件夾赡磅,給entry的key加上文件夾名稱即可魄缚,例如:test/commons: [...]

2. webpack學(xué)習(xí)之插件

new webpack.NamedModulesPlugin(),
new webpack.HotModuleReplacementPlugin(),
new webpack.ProvidePlugin({
  $: 'jquery',
  jQuery: 'jquery'
}),
// 拷貝第三方j(luò)s庫到out文件夾下面
new CopyWebpackPlugin([
  {
    from: path.resolve(__dirname+'/src/external.js'),
    to: './'
    // ignore: [ '*.js' ]  //忽略某一部分文件
  }
]),
new ExtractTextPlugin({
  filename: './index.[chunkhash:8].',
  allChunks: true,
  disable: false
}),
new OptimizeCSSAssetsPlugin({
  assetNameRegExp: /index\.[a-z 0-9]{8}\.css$/g,
  cssProcessor: require('cssnano'),
  cssProcessorOptions: { discardComments: { removeAll: true } },
  canPrint: false
}),
new CleanWebpackPlugin(['*'], {
  root: __dirname + '/out',
  verbose: true,
  dry: false,
}),
new HtmlWebpackPlugin({
  template: './index.html'
})

只是為了說明插件作用,上面代碼實例沒有順序焚廊,使用時如果順序有問題冶匹,可能會導(dǎo)致構(gòu)建報錯,插件的說明只是說了大概作用咆瘟,具體使用嚼隘,還是要到npm 具體了解。
ProvidePlugin : webpack配置ProvidePlugin后袒餐,在使用時將不再需要import和require進(jìn)行引入飞蛹,直接使用即可。比如: $('.text').text('測試')
CopyWebpackPlugin : 講一個文件直接拷貝到某個位置灸眼,比如講第三方sdk 或者 某些流量檢測文件直接拷貝到項目中使用卧檐。
HotModuleReplacementPlugin: 熱部署插件,文件改變后焰宣,瀏覽器會自動刷新
NamedModulesPlugin :這個插件的作用是在熱加載時直接返回更新文件名霉囚,而不是文件的id。
ExtractTextPlugin : 該插件的主要是為了抽離css樣式,防止將樣式打包在js中引起頁面樣式加載錯亂的現(xiàn)象匕积。
HtmlWebpackPlugin:一盈罐、為html文件中引入的外部資源如script、link動態(tài)添加每次compile后的hash闪唆,防止引用緩存的外部文件問題盅粪。二、可以生成創(chuàng)建html入口文件悄蕾,比如單頁面可以生成一個html文件入口票顾,配置N個html-webpack-plugin可以生成N個頁面入口。
OptimizeCSSAssetsPlugin :匹配到out文件夾中css進(jìn)行壓縮。
CleanWebpackPlugin : //每次構(gòu)建之前库物,都將上一次構(gòu)建的文件夾刪除霸旗,再生成新的。

3. webpack之optimization

optimization: {
    //common 插件
    splitChunks:{
      chunks: "all",//同時分割同步和異步代碼,推薦戚揭。
      minSize: 0,
      minChunks: 1, //最小引入次數(shù)
      maxAsyncRequests: 5, //按需加載最大請求次數(shù)為5的所有模塊就行拆分到一個單獨的代碼塊中
      maxInitialRequests: 3, //初始化加載最大請求次數(shù)為3的所有模塊就行拆分到一個單獨的代碼塊中
      name: true,
      //緩存組诱告,將多次引用的模塊test 緩存到
      cacheGroups:{
        //  開發(fā)模式下,緩存jquery等第三方庫民晒。
        // jquery:{
        //   test:'jquery', //要寫test設(shè)置項精居,不然會打包工程下所有的js文件
        //   chunks:'initial',
        //   name:'jquery',
        //   enforce:true
        // }
        default: {
          minChunks: 2,
          priority: -20,
          reuseExistingChunk: true,
        },
        // 生產(chǎn)模式下,打包entry的代碼潜必。
        //打包重復(fù)使用的代碼靴姿,//打包第三方類庫
        vendor: {
          name: 'vendor',
          chunks: 'initial',
          minChunks: 2,
          maxInitialRequests: 5, 
          minSize: 0, 
        },
        commons: {
          name: "commons",
          chunks: "initial",
          minChunks: Infinity
        }
      }
    }
},

這里就不多贅述了,關(guān)鍵解釋在上面代碼實例中

4. webpack之devServer

devServer: {
    contentBase: path.join(__dirname, ""), //注意這邊路徑不要寫太詳細(xì)磁滚,會導(dǎo)致部分文件重新構(gòu)建佛吓,頁面不刷新
    watchContentBase: true,
    //因為熱更新使用的是內(nèi)存 默認(rèn)資源是保存在內(nèi)存中的 需要使用publishpath制定相對路徑
    port: 8077,
    hot: true, //熱更新
    hotOnly: false,
    inline: true,
    historyApiFallback: true, //跳轉(zhuǎn)頁面
    openPage: './index.html', //默認(rèn)打開的頁面
    open: true, //自動打開頁面,
    clientLogLevel: "none", //阻止打印那種搞亂七八糟的控制臺信息
    allowedHosts:[], //允許訪問的服務(wù)器
    proxy: {
      '/api': 'http://localhost:3000'  //ajax 訪問代理
    },
    watchOptions: {
      poll: true
    }
}

關(guān)鍵解釋在上面代碼實例中
代碼在github上多矮,需要的同學(xué)耙册,可以clone到本地學(xué)習(xí)竭缝,還有多頁面打包方法在github上渠羞,感興趣的可以去看看。
本文作者原創(chuàng)秸侣,僅供學(xué)習(xí)交流使用赤屋,轉(zhuǎn)載需注明出處园骆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末陨仅,一起剝皮案震驚了整個濱河市津滞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌灼伤,老刑警劉巖触徐,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異狐赡,居然都是意外死亡撞鹉,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門猾警,熙熙樓的掌柜王于貴愁眉苦臉地迎上來孔祸,“玉大人隆敢,你說我怎么就攤上這事发皿。” “怎么了拂蝎?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵穴墅,是天一觀的道長。 經(jīng)常有香客問我,道長玄货,這世上最難降的妖魔是什么皇钞? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮松捉,結(jié)果婚禮上夹界,老公的妹妹穿的比我還像新娘。我一直安慰自己隘世,他們只是感情好可柿,可當(dāng)我...
    茶點故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著丙者,像睡著了一般复斥。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上械媒,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天目锭,我揣著相機(jī)與錄音,去河邊找鬼纷捞。 笑死痢虹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的兰绣。 我是一名探鬼主播世分,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼缀辩!你這毒婦竟也來了臭埋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤臀玄,失蹤者是張志新(化名)和其女友劉穎瓢阴,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體健无,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡荣恐,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了累贤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叠穆。...
    茶點故事閱讀 40,137評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖臼膏,靈堂內(nèi)的尸體忽然破棺而出硼被,到底是詐尸還是另有隱情,我是刑警寧澤渗磅,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布嚷硫,位于F島的核電站检访,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏仔掸。R本人自食惡果不足惜脆贵,卻給世界環(huán)境...
    茶點故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望起暮。 院中可真熱鬧卖氨,春花似錦、人聲如沸负懦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽密似。三九已至焙矛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間残腌,已是汗流浹背村斟。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留抛猫,地道東北人蟆盹。 一個月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像闺金,于是被迫代替她去往敵國和親逾滥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,086評論 2 355

推薦閱讀更多精彩內(nèi)容