1. manifest
manifest儲存了webpack的chunk相關的資訊。具體為一個物件,或者包含runtime的一段程式碼。其中包含著一個chunkId,已經對應chunkId的相關資訊,例如非同步模組的
檔名和路徑
2. HashedModuleIdsPlugin
將打包出來的moduleId從自增的數字換成相對的檔案路徑的hash值,使得moduleId在檔案位置和內容不變的情況下,不會發生變化。
3. webpack4 CacheGroup可參考的配置
// 打包node_modules,排除lodash venders: { test: /node_modules\/(?!(lodash)\/)/, name: 'vendors-common', chunks: 'all' }, // 只打包lodash,並命名為 vender-lodash lodash: { test: /node_modules\/lodash\//, name: 'vender-lodash' }, //將多個非同步載入的模組共用的部分打進utils中, reuseExistingChunk 是重用已經存在的chunk //防止多個模組中出現重複的chunk default: { minSize: 0, minChunks: 2, reuseExistingChunk: true, name: 'utils' } // 只打包非同步模組中的chunk 'async-vendors': { test: /[\\/]node_modules[\\/]/, minChunks: 2, chunks: 'async', name: 'async-vendors' } // 這裡定義的是在分離前被引用過兩次的檔案,將其一同打包到common.js中,最小為30K common: { name: "common", minChunks: 2, minSize: 30000 }
4. webpack-dev-sever可參考的配置
// 開發環境設定本地伺服器,實現熱更新 devServer: { contentBase: path.resolve(__dirname, 'static'), // 提供給外部訪問 host: '0.0.0.0', port: 8388, // 允許開發伺服器訪問本地伺服器的包JSON檔案,防止跨域 headers: { 'Access-Control-Allow-Origin': '*' }, // 設定熱替換 hot: true, // 設定頁面引入 inline: true }, // 檔案輸出配置 output: { // 設定路徑,防止訪問本地伺服器相關資源時,被開發伺服器認為是相對其的路徑 publicPath: 'http://localhost:8188/dist/js/', }, // 外掛配置 plugins: [ // 熱更新替換 new webpack.HotModuleReplacementPlugin() ]