jQuery
這樣的前端工具,再到目前的三大框架Vue、React、Angular
,開發方式也衝原來的js
的ES5
語法到ES六、七、八、九、10
,到Type Script
,包括編寫CSS
的預處理器less、scss
等衝上文的發展史知道現階段的Web
開發涌現了許多新的開發方式,好比:ES5
語法到ES六、七、八、九、10
,到Type Script
,包括編寫CSS
的預處理器less
、scss
等,可是瀏覽器並不能識別less、sass、scss
等語言,爲了兼容瀏覽器能識別開發者寫出的代碼就須要將瀏覽器不能識別的代碼轉換成瀏覽器可否識別的代碼,webpack
做用就在此,因此 webpack
就是一個打包工具,它會分析你的項目結構,找到JavaScript
模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss,TypeScript
等),並將其打包爲合適的格式以供瀏覽器使用。這裏附上一個 webpack
官網的圖片,從這張圖片能夠形象的說明 webpack
的做用 css
loader
和Plugin
能夠參考該位置的API
)webpack
的核心概念,好比入口、出口、Loaders、Plugins
等等,可是這裏並無一些對它們解析的詳細API;webpack
詳細的配置選項,均可以在這裏查詢到,更多的時候是做爲查詢手冊;loaders,webpack
的核心之一,常見的loader
均可以在這裏查詢到用法,好比css-loader、babel-loader、less- loader
等等;plugins,webpack
的核心之一,常見的plugin
均可以在這裏查詢到用法,好比BannerPlugin、 CleanWebpackPlugin、MiniCssExtractPlugin
等等;Webpack
的運行是依賴Node環境的,因此咱們電腦上必須有Node
環境html
webpack
的安裝須要安裝兩個東西,一個是webpack
、還一個是 webpack-cli
二者之間的關係是:前端
webpack
命令,會執行node_modules
下的.bin
目錄下的webpack
webpack-cli
執行webpack
命令會報錯webpack-cli
中代碼執行時,纔是真正利用webpack
進行編譯和打包的過程;(使用第三方腳手架生成的項目是沒有安裝webpack-cli
的,他是利用相似本身的vue-service-cli的東西) webpack
命令打包流程以下: vue
默認狀況下 webpack
打包是將 src
文件夾下的 index.js
文件做爲入口的,因此當前目錄沒有 src
文件夾或者 src
文件夾下面沒有一個 index.js
文件的話會直接報錯。而後從入口開始,會生成一個依賴關係圖,這個依賴關係圖會包含應用程序中所需的全部模塊(好比.js文件、css文件、圖片、 字體等),而後遍歷圖結構,打包一個個模塊(根據文件的不一樣使用不一樣的loader
來解析); 打包成功後會默認在跟目下下生成一個 dist
文件夾生成一個 main.js
文件,此時將 main.js
文件引入到 index.html
後那些經過瀏覽器不能識別的語法書寫的代碼就能正常執行了好比寫一個簡單的減價法運算經過 commonJS
的方案引入到 index.js
示例代碼以下 運行結果:node
commonjs
中的 require
函數此時能夠看一下打包後生成的 main.js
文件 發現文件中的代碼被壓縮醜化了,可是去除了 commonjs
語法將全部的關聯文件中的代碼都堆在一個文件中,可是仍是存在一些 const
關鍵字、箭頭函數等(這些都是 es6
語法,如今比較新的瀏覽器支持這種語法,可是一些老大的瀏覽器仍是不支持),這裏能夠經過配置 webpack
使用babel
來進行轉換和設置。webpack
知識點補充:es6
webpack
命令,此時使用的是全局的 webpack
,若是沒有安裝全局的 webpack
即便本地安裝了局部的 webpack
也會報錯找不到命令webpack
想使用本地的 webpack
打包此時應該使用的是 node_module
文件夾下的 .bin
文件夾下的 webpack
進行打包,因此可使用使用 ./node_modules/.bin/webpack
來調用本地的 webpack
webpack
以外還可使用 npx webpack
命令來使用 npx
會直接執行 node_modules
下的某一個命令package.json
添加一個腳本命令以下圖 此時就能夠直接使用 yarn build
,該命令會找到 package.json
裏面的 scripts
裏面所建立的 build
,而後就會執行裏面的命令,而 package.json
中的命令會優先去找 node_modules
裏面的命令,若是node_modules
沒有對應的命令則會去找全局的在一般狀況下,webpack
須要打包的項目是很是複雜的,而且咱們須要一系列的配置來知足要求,默認配置必然 是不能夠的。咱們能夠在根目錄下建立一個webpack.config.js
文件,來做爲webpack
的配置文件:默認 webpack
回到根目錄下的 webpack.config.js
文件中讀取配置,若是想更改文件名稱能夠經過 --config
來修改默認的配置文件名稱以下圖: web