摘要:多頁面配置進擊基礎篇一進擊基礎篇二配置多頁面配置多頁面配置即是多入口需要寫成對象形式,注意數組形式會變成多入口單頁面,因為打包之后的會合并成一個入口文件出口不能寫同一個文件用代替以上配置并不能多頁面,還需要個模板,并且指明各自的代碼塊去生成
多頁面配置
進擊webpack 4 (基礎篇一)
進擊webpack4 (基礎篇二:配置)
## 多頁面配置 ##
多頁面配置即是多入口
entry需要寫成對象形式, 注意數組形式會變成多入口單頁面, 因為打包之后的chunks 會合并成一個!
//webpack.config.js entry:{ home:["@babel/polyfill","./src/index.js"], login:["@babel/polyfill","./src/login.js"] }, // 入口文件
出口不能寫同一個文件 用[name]代替
output:{ filename:"[name].js", path:path.resolve(__dirname,"./dist") }
以上配置并不能多頁面, 還需要2個html模板,并且指明各自的chunks(代碼塊)
plugins: [ // new PluginName 去生成js對象供給 webpack compiler 調用 new HtmlWebpackPlugin({ template:"./index.html", filename:"index.html", chunks:["home"] }), new HtmlWebpackPlugin({ template:"./login.html", filename:"login.html", chunks:["login"] }), ],
否則每個頁面會同時引入所有的js
devtools在production下 打包后的代碼都被壓縮掉了,我們有時候需要調試代碼的時候沒法定位,devtools就是干這件事的
它有7種類型基本類型
eval: 每個module會封裝到 eval 里包裹起來執行,并且會在末尾追加注釋 //@ sourceURL.
source-map: 生成一個SourceMap文件.
hidden-source-map: 和 source-map 一樣,但不會在 bundle 末尾追加注釋.
inline-source-map: 生成一個 DataUrl 形式的 SourceMap 文件.
eval-source-map: 每個module會通過eval()來執行,并且生成一個DataUrl形式的SourceMap.
cheap-source-map: 生成一個沒有列信息(column-mappings)的SourceMaps文件,不包含loader的 sourcemap(譬如 babel 的 sourcemap)
cheap-module-source-map: 生成一個沒有列信息(column-mappings)的SourceMaps文件,同時 loader 的 sourcemap 也被簡化為只包含對應行的。
我們常用的是source-map
devtools:"source-map"
watch
watch:true, watchOptions:{ poll:5 // 每秒問5次要不要打包 }
可以實時監控打包 每當代碼變化就重新打包
其他的一些pluginclean-webpack-plugin
每次打包之前清空原來的文件夾
yarn add clean-webpack-plugin -D
const cleanWebpackPlugin = require("clean-webpack-plugin") plugins: [ // new PluginName 去生成js對象供給 webpack compiler 調用 new cleanWebpackPlugin("./dist") // 指定需要清空的目錄 ],
copy-webpack-plugin
用于文件的拷貝
yarn add copy-webpack-plugin -D
const copyWebpackPlugin= require("copy-webpack-plugin") plugins: [ // new PluginName 去生成js對象供給 webpack compiler 調用 new copyWebpackPlugin({ from:"xxx", to:"./" // 在dist里 }) // 指定從哪里拷貝到哪里 ],
- webpack 可視化工具
yarn add webpack-bundle-analyzer -D
const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; plugins: [ new BundleAnalyzerPlugin () ]跨域代理配置
devServer:{ proxy:{ "/api":{ target:"www.baidu.com", pathReWrite:{"/api":""}, // 請求/api的url /api 會替換成"" ,并且自動加前綴target secure: false, // 接受運行在 HTTPS 上,使用了無效證書的后端服務器 changeOrigin: true, //虛擬一個服務器接收你的請求并代你發送該請求, } }, contentBase: "./dist", //當前服務以哪個作為靜態資源路徑 host:"localhost", // 主機名 默認是localhost port:3000, // 端口配置 open:true, // 是否自動打開網頁 compress:true // 是否精簡 }
如需多個代理, 多配制幾個proxy的key值就ok
resolveresolve:{ modules:[path.resolve("node_modules")], // 數組 可以配置多個 強制指定尋找第三方模塊的目錄 使得查找更快 alias:{ //別名配置 import xxx from "src/xxx" ---> import xxx from "@/xxx" "@":path.resolve(__dirname,"./src") }, extensions:[".css",".js",".json",".jsx"] // 自動添加后綴 加載模塊時候依次添加后綴 直到找到為止 }設置開發或者生產環境
webpack自帶插件webpack.definePlugin, 可以定義全局變量
webpack.definePlugin({ Dev:""development"", // 注意雙引號里面套的是單引號的字符串 Pro:""production"" // if(Dev==="development"){}else{//.....} 這樣在其他環境中使用定義不同接口地址 })
配置篇完
下一節 webpack 優化
對于沒有其他依賴的第三方庫, 不解析
webpack內置插件ignorePlugin 的使用
動態鏈接庫
多核并發打包
webpack的tree-shaking跟scope-hosting
公共js代碼的提取
懶加載
熱更新
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102115.html
摘要:進擊基礎篇一進擊基礎篇二配置一進擊基礎篇三配置二不解析不依賴第三方模塊的模塊有一些第三方模塊,它本身不依賴于其他模塊,比如,,不去編譯這些庫,會使得打包更加快速是個正則或者包含正則的數組不去解析忽略 進擊webpack 4 (基礎篇一)進擊webpack4 (基礎篇二:配置 一)進擊webpack4 (基礎篇三:配置 二) 不解析不依賴第三方模塊的模塊 noParse 有一些第三方模塊...
摘要:進入入口起點后,會找出有哪些模塊和庫是入口起點直接和間接依賴的。用于對模塊的源代碼進行轉換。指定生產還是開發入口文件打包后的文件名這里需指定一個絕對路徑我們需要的模塊去解析路徑包含一系列的規則是一個具有屬性的對象。 前文:進擊webpack 4 (基礎篇 一) webpack.config.js基礎配置 webpack 有4大概念 入口(entry) 輸出(output) load...
摘要:的垃圾回收器,進行回收。它們的數據就存放在堆內存中,大小不一定,動態分配內存,可隨時修改。引用類型的變量存的是其在堆內存中的地址,值的讀取,就是讀取這個內存地址中儲存的內容。 這東西還是很重要的,你要是搞懂了,就會去除很多困惑,比如不知道大家在學習js 的時候,有沒有對 基礎類型 和 引用類型 感到困惑過,兩者之間 表現的不同之處。 js 不同其他編程語言,它是腳本語言。所以,它的數...
閱讀 3511·2023-04-25 14:57
閱讀 2560·2021-11-22 14:56
閱讀 2079·2021-09-29 09:45
閱讀 1761·2021-09-22 15:53
閱讀 3313·2021-08-25 09:41
閱讀 896·2019-08-29 15:22
閱讀 3289·2019-08-29 13:22
閱讀 3122·2019-08-29 13:08