webpack中的filename 和 chunkFilename 的區(qū)別實(shí)例解析
filename
filename 是一個很常見的配置,就是對應(yīng)于 entry 里面的輸入文件,經(jīng)過webpack打包后輸出文件的文件名。比如說經(jīng)過下面的配置,生成出來的文件名為 index.min.js。

chunkFilename
chunkFilename 指未被列在 entry 中,卻又需要被打包出來的 chunk 文件的名稱。一般來說,這個 chunk 文件指的就是要懶加載的代碼。
比如說我們業(yè)務(wù)代碼中寫了一份懶加載 lodash 的代碼:
// 文件:index.js
// 創(chuàng)建一個 button
let btn = document.createElement("button");
btn.innerHTML = "click me";
document.body.appendChild(btn);
// 異步加載代碼
async function getAsyncComponent() {
var element = document.createElement('div');
const { default: _ } = await import('lodash');
element.innerHTML = _.join(['Hello!', 'dynamic', 'imports', 'async'], ' ');
return element;
}
// 點(diǎn)擊 button 時,懶加載 lodash,在網(wǎng)頁上顯示 Hello! dynamic imports async
btn.addEventListener('click', () => {
getAsyncComponent().then(component => {
document.body.appendChild(component);
})
})我們的 webpack 不做任何配置,還是原來的配置代碼:
{
entry: {
index: "../src/index.js"
},
output: {
filename: "[name].min.js", // index.min.js
}
}這時候的打包結(jié)果如下:

這個 1.min.js 就是異步加載的 chunk 文件。文檔里這么解釋:
output.chunkFilename 默認(rèn)使用 [id].js 或從 output.filename 中推斷出的值([name] 會被預(yù)先替換為 [id] 或 [id].)
文檔寫的太抽象,我們不如結(jié)合上面的例子來看:output.filename 的輸出文件名是 [name].min.js,[name] 根據(jù) entry 的配置推斷為 index,所以輸出為 index.min.js;
由于 output.chunkFilename 沒有顯示指定,就會把 [name] 替換為 chunk 文件的 id 號,這里文件的 id 號是 1,所以文件名就是 1.min.js。
如果我們顯式配置 chunkFilename,就會按配置的名字生成文件:
{
entry: {
index: "../src/index.js"
},
output: {
filename: "[name].min.js", // index.min.js
chunkFilename: 'bundle.js', // bundle.js
}
}
總結(jié)
filename 指列在 entry 中,打包后輸出的文件的名稱。
chunkFilename 指未列在 entry 中,卻又需要被打包出來的文件的名稱。
到此這篇關(guān)于webpack中的filename 和 chunkFilename 的區(qū)別的文章就介紹到這了,更多相關(guān)webpack filename 和 chunkFilename 的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Javascript生成全局唯一標(biāo)識符(GUID,UUID)的方法
本文給大家匯總介紹了5種使用javascript實(shí)現(xiàn)全局唯一標(biāo)識符(GUID,UUID)的方法,非常的全面,有需要的小伙伴可以來參考下2016-02-02
小程序開發(fā)中如何使用async-await并封裝公共異步請求的方法
在平常的項(xiàng)目開發(fā)中肯定會遇到同步異步執(zhí)行的問題,這篇文章主要介紹了小程序開發(fā)中如何使用async-await并封裝公共異步請求的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01
JavaScript中Iterator迭代器接口和循環(huán)
這篇文章主要介紹了JavaScript中Iterator迭代器接口和循環(huán),迭代器是數(shù)據(jù)結(jié)構(gòu)遍歷的一種機(jī)制迭代器主要是提供for...of使用,更多相關(guān)內(nèi)推需要的小伙伴可以參考下面文章內(nèi)容2022-06-06
javascript中的變量作用域以及變量提升詳細(xì)介紹
在javascript中, 理解變量的作用域以及變量提升是非常有必要的。這個看起來是否很簡單,但其實(shí)并不是你想的那樣,還要一些重要的細(xì)節(jié)你需要理解2013-10-10

