webpack是前端構建的一個核心所在,若是說後端構建就是把高級語言代碼編譯成機器碼,那麼前端的構建就是從新組合原有的代碼,雖然並不編譯成機器碼,但實際上,由於前端長期使用簡單的腳本開發,HTML,CSS,JS互相分離,難以造成相似工程化的「凝聚力」。前端
因此伴隨着大量的模塊化標準的創建,「組件化」前端的概念也逐漸確立,前端開始着重以功能模塊爲劃分,而不是和之前通常以代碼種類爲劃分。node
webpack是很好的構建解決方案,簡單地說,它經過人爲設定的配置,按照需求將前端的各類代碼按照指定的方式組合,整理成瀏覽器可執行的正常代碼。這裏的各類代碼包括但不限於JS,能夠是HTML,CSS等任何代碼。webpack
一、從context對應的文件夾開始…web
二、尋找entry裏全部的文件名…npm
三、而後讀取它們的內容。在解析代碼時,每個經過import(ES6) 或require()(Node) 引入的依賴都會被打包到最終的構建結果當中。它會接着搜索那些依賴,以及那些依賴的依賴,直到「依賴樹」的葉子節點 — 只打包它所須要的依賴,沒有其餘的東西。後端
四、Webpack 將全部東西打包到output.path對應的文件夾裏,使用output.filename對應的命名模板來命名([name]被entry裏的對象鍵值所替代)瀏覽器
webpack包括許多屬性,能夠靈活定製打包編譯過程。這篇文章,就着重地介紹webpack的配置,由於這是它的靈魂所在服務器
入口文件的屬性,整個項目的主入口,其他依賴的模塊均在這些文件中引入前端構建
不一樣資源的加載器,默認webpack只支持JS,可是引入不一樣的loader,就能夠加載更多類型的資源文件,例如HTML,CSS,JPG等等。經過module屬性配置須要匹配的文件資源和對應的加載器。須要注意的是,加載器須要提早經過npm安裝。模塊化
webpack能夠爲js的各類不一樣的宿主環境提供編譯功能,爲了能正確的進行編譯,就須要開發人員在配置裏面正確的進行配置
默認狀況下,target的值是web,也就是爲類瀏覽器的環境提供編譯