日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

wbepack中output.filename和output.chunkFilename

發(fā)布時(shí)間:2023/12/2 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 wbepack中output.filename和output.chunkFilename 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)于webpack配置中filename和chunkFilename在使用中有些不懂的地方,研究之后記錄如下。

filename: string | function

此選項(xiàng)決定了每個(gè)輸出 bundle 的名稱。這些 bundle 將寫入到 output.path 選項(xiàng)指定的目錄下。

對(duì)于單個(gè)入口起點(diǎn),filename 會(huì)是一個(gè)靜態(tài)名稱。

chunkFilename: string

此選項(xiàng)決定了非入口(non-entry) chunk文件的名稱。

上面就是關(guān)于filename和chunkFilename的官文解釋。

首先什么是入口?

目前可以理解為entry字段就是提供的應(yīng)用的入口文件。(這個(gè)解釋并不全面)

開始做出如下嘗試:

目錄結(jié)構(gòu):

nodule_modules/

dist/

src/

? --index.js

? --a.js

webpack.config.js

文件webpack.config.js

var path = require('path')module.exports = {mode: 'development',entry: './src/index.js',output: {path: path.resolve(__dirname, '../dist'),filename: '[name].[contenthash:6].js',chunkFilename: '[name].[contenthash:4].js'} }

上面配置中,整個(gè)應(yīng)用的入口就是文件/src/index.js。

文件src/index.js

import('./a.js') console.log('index')

文件src/a.js

console.log('a')


打包后的結(jié)果可以看出來index.js對(duì)應(yīng)的main.conenthash.js是6位的,a.js對(duì)應(yīng)的1.contenthash.js是4位的。

這和我們預(yù)想的結(jié)果一樣,filename設(shè)置的是入口文件的文件名,chunkFilename設(shè)置的是非入口文件的文件名。動(dòng)態(tài)加載的文件a.js并不是入口文件。

我們知道webpack打包的文件分為三大模塊,一個(gè)是第三方庫(kù),這部分比較穩(wěn)定,可以打包到一起,利于緩存。一個(gè)是業(yè)務(wù)代碼,基本上每次發(fā)版都會(huì)修改。最后一個(gè)是webpack生成的runtime和manifest,每次打包都會(huì)改變。

現(xiàn)在我們的代碼中只涉及到了自己的業(yè)務(wù)代碼,并沒有第三方庫(kù)代碼,即使這樣我們也可以分離出webpack生成runtime和manifest。

修改配置如下:

var path = require('path')module.exports = {mode: 'development',entry: './src/index.js',output: {path: path.resolve(__dirname, '../dist'),filename: '[name].[contenthash:6].js',chunkFilename: '[name].[contenthash:4].js'},optimization: {runtimeChunk: {name: 'manifest'}} }

可以看到entry對(duì)應(yīng)生成的文件main.js文件的hash變成了4位,但是entry明明就是規(guī)定的是應(yīng)用的入口文件,對(duì)應(yīng)的文件名配置應(yīng)該是filename,對(duì)應(yīng)的hash位數(shù)應(yīng)該是6位。

但現(xiàn)實(shí)它就是4位的。

并且還能看出來新分離出來的manifest.js的hash是6位的。

這其實(shí)也說明了webpack打包的應(yīng)用本質(zhì)上的入口并不是entry字段提供的文件,應(yīng)用的入口是webpack自己生成的runtime。是通過runtime + manifest才將我們的代碼和第三方庫(kù)組織起來并且正常運(yùn)行的。

所以webpack打包的應(yīng)用入口是自己生成的runtime + manifest。

沒有提取manifest的時(shí)候entry生成對(duì)應(yīng)的main.js的hash位數(shù)是正確的。這其實(shí)只是一個(gè)巧合,因?yàn)檫@個(gè)情況下整個(gè)引用的入口就是main.js,因?yàn)閙anifest + runtime并沒有從main,js中分離出來。所以入口文件對(duì)應(yīng)的就是main.js,然后filename的設(shè)置是正確應(yīng)用在了main.js上。

從上面的分析中可以推倒出,如果我們把manifest + runtime內(nèi)聯(lián)到HTML文件中,那么將不會(huì)有6位hash的文件被生成,因?yàn)椴]有入口的js文件被生成。修改配置文件如下:

var path = require('path') var HtmlWebpackPlugin = require('html-webpack-plugin') var ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin')module.exports = {mode: "development",entry: './src/index.js',output: {path: path.resolve(__dirname, './dist'),filename: '[name].[contenthash:6].js',chunkFilename: '[name].[contenthash:4].js'},optimization: {runtimeChunk: {name: "manifest",},},plugins: [new HtmlWebpackPlugin({template: './src/index.html'}),new ScriptExtHtmlWebpackPlugin({inline: /manifest..*.js$/})] }


從上圖中可以看到確實(shí)沒有6位hash的文件被生成了。

總結(jié):

output.filename規(guī)定的是應(yīng)用入口文件的名稱,而output.entry提供的是webpack打包的入口。某種情況下這兩個(gè)入口是統(tǒng)一的。

通過webpack打包后的應(yīng)用入口是webpack生成的manifest + runtime。當(dāng)沒有分離manifest + runtime的時(shí)候,這部分生成的內(nèi)容會(huì)和entry字段提供的文件相同。

參考

  • 輸出(output)
  • manifest
  • 總結(jié)

    以上是生活随笔為你收集整理的wbepack中output.filename和output.chunkFilename的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 30一40一50老女人毛片 | 2019国产精品 | 亚洲瘦老头同性xxxxx | 亚洲精品视频在线观看免费视频 | 美女扣逼喷水视频 | 久草手机在线视频 | 91视频黄 | 黄色免费一级 | 狠狠干2024| 欧美二级片 | 91视频免费观看网站 | 国产精品偷伦视频免费观看了 | 偷拍青青草 | 综合色伊人 | 国产a不卡| 337p粉嫩大胆噜噜噜亚瑟影院 | 国产美女久久久 | 噜噜噜在线视频 | 精品少妇一区二区 | 免费成人美女在线观看. | 亚洲乱子伦 | japanese av在线| 日韩色图视频 | 日本中文字幕在线视频 | 亚洲毛片在线免费观看 | 99日韩 | 动漫3d精品一区二区三区乱码 | 亚洲中文字幕视频一区 | 玉女心经在线看 | 久久久天天 | 在线看你懂得 | 国产欧美一区二区精品性色 | 亚洲一区二区免费电影 | 久久久久久久久久久久国产 | 亚洲成在线 | 精品一区在线观看视频 | 欧美激情免费看 | 高清视频在线免费观看 | 欧美激情在线免费观看 | 四虎影视在线 | 少妇高潮惨叫久久久久 | 亚洲第一淫片 | 日韩jizz | 97无码精品人妻 | 亚洲无码精品在线观看 | 98精品视频 | 福利片第一页 | 国产在线a| 成人3d动漫一区二区三区 | 日本不卡视频在线播放 | 丰满人妻一区二区 | 亚洲av人人夜夜澡人人 | 91在线高清 | 中文字幕av影院 | 邻居少妇张开腿让我爽了在线观看 | 一本—道久久a久久精品蜜桃 | 日本后进式猛烈xx00动态图 | av成人在线免费观看 | 6680新视觉电影免费观看 | 我和单位漂亮少妇激情 | 欧美在线观看成人 | 最近免费中文字幕大全免费版视频 | 韩国伦理在线视频 | www日本黄色 | 国产精彩视频一区二区 | 久久免费视频1 | 手机在线观看av | 中文国产在线观看 | 亚洲美女久久久 | 男男啪啪网站 | 免费精品视频一区二区三区 | 第一章婶婶的性事 | 中文免费在线观看 | 国产又粗又猛又黄又爽无遮挡 | 日日噜噜夜夜狠狠久久波多野 | 国产日产久久高清欧美一区 | 色天天色综合 | 日韩视频一区二区 | 欧美久久久久久久久久久久久久 | 俺去操| 国精品无码人妻一区二区三区 | 老妇女玩小男生毛片 | 免费黄色观看 | av最新版天堂资源在线 | 毛片大全在线观看 | 日本三级全黄 | 国产精品天干天干 | 亚洲av综合色区无码一区爱av | 亚洲欲| 伊人22综合 | 天天综合网久久 | 在线看视频| 你懂得在线 | 国产精品视频免费网站 | 日韩视频一区在线观看 | 久久久www成人免费无遮挡大片 | 成年人视频在线免费看 | 色小说在线 | 欧美日本三级 |