上一節我們講到了 webpack
的配置文件 webpack.config.js
,這個文件需要我們手動在項目根目錄下創建。創建後要對其進行配置,本節我們來看一下如何配置 webpack
中的入口,也就是 entry
屬性。
entry
入口可以用於指定 webpack
是從哪個模塊開始構建項目的,通過配置 entry
屬性的值可以指定一個或多個入口起點,默認值爲 ./src
。
entry 的三種形式
在 webpack.config.js
配置 entry
屬性,有三種形式的值,其中 string
和 array
用於配置單個入口。object
用於配置多個入口。
string
:字符串類型,入口模塊的文件路徑可以是相對路徑。array
:數組類型,可以將多個文件打包爲一個文件。object
:對象類型,每個入口生成一個Chunk
。
單個入口配置
如果要配置單個入口文件,可以給 entry
指定一個 string
或者 array
類型的值,這樣就只會生成一個 chunk
,當沒有配置入口的文件對象名稱時,默認使用 main
。
例如我們如果要給 entry
屬性傳遞一個字符串類型的值,可以像下面這樣寫:
entry:'./path/file.js'
另外,如果傳入的是一個數組類型的值,則將會創建多個主入口,並將它們的依賴導向到一個chunk
中。例如下面代碼表示當我們執行命令後,a.js
和 b.js
會合並打包到 bundle.js
文件中:
entry:['./path/a.js','./path/b.js'],
示例:
我們可以通過一個具體的小例子來看一下 entry
的使用。下面是我們需要的代碼:
// a.js文件
function a(){
console.log("這是一個a.js文件");
}
// b.js文件
function b(){
console.log("這是一個b.js文件");
}
然後配置 webpack.config.js
文件:
module.exports = {
entry:['./a.js','./b.js'], // 傳入一個數組
output:{
path:__dirname,
filename:'./bundle.js'
}
}
接着執行 npm run build
命令,可以看到,a.js
和 b.js
文件同時被打包到 bundle.js
文件中啦,如下圖所示:
多個入口配置
如果我們想要爲 webpack
配置多個入口,則可以爲 entry
設置一個 object
類型的值。語法如下:
entry: {[entryChunkName: string]: string|Array<string>}
對象語法會比較繁瑣,但是這是應用程序中定義入口的最可擴展的方式。
簡單點理解其實就是在 entry
中設置鍵值對:
entry: {
key1: value1,
key2: value2,
...
}
這是最完整的 entry
配置,其他形式只是它的簡化形式而已。對象中的每一對屬性對,都代表着一個入口文件,因此多頁面配置時,就可以使用這種形式的 entry
配置。
示例:
要實現分離應用程序和第三方庫入口,webpack.config.js
配置文件的代碼如下所示:
const config = {
entry: {
app: './src/app.js',
vendors: './src/vendors.js'
}
};
這表示 webpack
將從 app.js
和 vendors.js
開始創建依賴圖,並且這些依賴圖是完全分離、互相獨立的。這種方式比較常見於只有一個入口起點的單頁應用程序中。