1. 程式人生 > 實用技巧 >使用webpack打包JS依賴庫

使用webpack打包JS依賴庫

這裡的依賴庫是指給第三方平臺使用的JS庫檔案。與普通的web應用程式碼不同,依賴庫要正確設定匯出的內容

配置項

主要有三個配置項

library

生成庫的名稱(非檔名)

libraryTarget

配置以哪種方式暴露library

  • var / assign: 暴露為一個變數
  • this / window / global / commonjs:在物件上賦值暴露
  • commonjs2 / amd / umd:指定相容特定的模組系統

libraryExport

配置哪個模組將被暴露,可以是字串或字串陣列。預設是undefined

如libraryTarget為umd時,原始碼通過export default xxx 匯出,如不設定libraryExport,則使用該庫時直接引入不是xxx,而是一個物件,它有一個default屬性,值為xx

遇到的一些問題

匯出後的內容多了一個default屬性

原始碼

function xxx () {
    
}
export default xxx;

webpack 部分配置:

output: {
    filename: '[name].js',
    path: path.resolve(__dirname, 'dist'),
    library: 'xxx',
    libraryTarget: 'umd',
}

通過script引入打包後的程式碼,window.xxx 並非是上面匯出的內容,而是一個物件,其default屬性是真正匯出的內容

排查過程:

檢視webpack打包後的程式碼,發現在是這樣匯出的

// ... 此處是xxx的宣告和定義

exports.default = xxx

但原始碼裡是通過ES6的module語法匯出的,由此想到webpack使用的commonjs規範,因此自動將ES6裡的export default轉為了exports.default,所以打包後匯出的內容多啦一個default屬性

解決

主要目的是把default幹掉,直接匯出xxx,檢視webpack文件,發現可以通過libraryExport配置暴露(匯出)哪個模組

最終將libraryExport設定為xxx,就解決啦!