webpack
應該使用哪一個模塊,來做爲構建其內部依賴圖的開始。進入入口起點後,webpack 會找出有哪些模塊和庫是入口起點(直接和間接)依賴的。默認是將src/index.js
做爲入口文件dist
文件夾,默認的打包文件名稱是 main.js
loader
能夠用於對模塊的源代碼進行轉換,將全部類型的文件轉換爲 webpack
可以處理的有效模塊,而後你就能夠利用 webpack
的打包能力,對它們進行處理。例如 css
文件,能夠將css
文件也當作是一個模塊,咱們是經過import
來加載這個模塊的;在加載這個模塊時,webpack
其實並不知道如何對其進行加載,咱們必須制定對應的loader
來完成這個功能Plugin
能夠用於執行更加普遍的任務,好比打包優化、資源管理、環境變量注入等entry
以及 output
兩個參數,配置的方法也有兩種
webpack --entry ./src/main.js --output-path ./build --output-filename build.js
index.js
文件改爲 main.js
沒有配置入口文件 webpack
默認會讀取 webpack.config.js
文件中的配置,若是須要自定義文件命令中添加參數配置便可配置規則以下配置方式:loader 用於對模塊的源代碼進行轉換。loader 可使你在
import
或 "load(加載)" 模塊時預處理文件。所以,loader 相似於其餘構建工具中「任務(task)」,並提供了處理前端構建步驟的得力方式。loader 能夠將文件從不一樣的語言(如 TypeScript)轉換爲 JavaScript 或將內聯圖像轉換爲 data URL。loader 甚至容許你直接在 JavaScript 模塊中import
CSS 文件!css
module.rules
是個數組而且容許咱們配置多個 loader
具體配置以下:
rules
是個數據而後數組中是每一個 rule對象,對象中有多個屬性rule
對象中的 test
屬性,用於對 resource
(資源)進行匹配的,一般會設置成正則表達式;rule
對象中的 use
屬性 對應的值是個數組
loader
必須有一個 loader
屬性,對應的值是一個字符串;options
可選的屬性,值是一個字符串或者對象,值會被傳入到loader
中;options
課直接寫成 ['css-loader']
loader
屬性,其實就是 use的縮寫,若是隻用到一個 loader
而且沒有 option
的時候可使用縮寫形式css-loader
對應命令以下:yarn add css-loader -D
css-loader
而後此時引入 css
文件會報出以下錯誤: webpack
並不知道如何對其進行加載,因此提示須要制定對應的loader
此時須要配置 css-loader
因此他的做用就是幫助 webpack
讀取 css
文件的 loader
,安裝後配置方法有兩種
import
語句中顯式指定 loader
。import "css-loader!../css/index.css";
loader
webpack
就能加載 css
文件了,打包也就成功了css-loader
的用法,最終成功打包,可是運行時發現樣式並無生效以下圖: css-loader
僅僅是對 css
文件進行解析,並不會將解析後的 css
插入到頁面中,因此若是要讓 css
文件生效,就須要插入這個動做,此時就可使用 style-loader
進行插入動做,首先第一步同上須要安裝 style-loader
,一樣的僅僅只是開發使用,因此只須要安裝開發依賴,命令以下:yarn add style-loader -D
配置方式和 css-loader
相同以下圖: loader
的執行順序是從右向左(或者說從下到上,或者說從後到前的),因此咱們須要將style-loader
寫到css-loader
的前面;不然會報錯(應爲要先將 css
加載出來以後再插入,若是沒加載出來直接插入確定是不知道插入什麼因此打包會報錯),css
,因此就會有 less
、sass
等文件,可是這些預處理文件 webpack
是不知道怎麼加載的,一樣的一些動態代碼的寫法瀏覽器也不支持的,因此就須要將 less
文件先轉成 css
文件而後按照 css
文件的打包流程打包便可 這裏可使用 less
轉換工具進行轉換安裝指令以下: yarn add less -D
npx less ./src/style/style.less > ./src/style/style1.css
css
多了之後每一個文件都這樣執行如下很影響效率,此時就可使用 less-loader
,讓他來幫咱們轉換less-loader
命令以下:yarn add less-loader -D
而後在配置文件中配置browserslist
是在不一樣前端工具直接共用目標瀏覽器和 node
版本的配置工具,使用到 browserslist
的前端工具備:
caniuse-lite
的工具,這個工具的數據來自於caniuse
的網站上;這些工具會根據咱們的配置來獲取相關的瀏覽器信息,以方便決定是否須要進行兼容性的支持,具體 browserslist
編寫規則等能夠參考 github.com/browserslis…該網站,裏面有詳細的描述。 配置方式:
在package.json中配置 前端
單獨的一個配置文件.browserslistrc文件; node
若是沒有配置 browserslist
會有個默認的配置: webpack
PostCSS
主要是一個使用 js
來轉換樣式的工具,這個工具能夠幫助咱們進行一些 CSS
的轉換和適配,好比自動添加瀏覽器前綴,css
樣式重置;可是實現這些功能都須要相應的一些插件。
postcss
工具以及命令工具 postcss-cli
yarn add postcss postcss-cli -D
autoprefixer
後來代碼實操postcss
給代碼添加前綴的一個插件
yarn add autoprefixer -D
npx postcss --use autoprefixer -o ./src/style/style-new.css ./src/style/style.css
postcss-loader
的做用相似於 less-loader
,正式開發中有不少 css
文件咱們不可能每一個文件都想上文中那樣每一個都用指令轉換,因此此時 webpack
中使用 postcss
就能夠藉助 postcss-loader
來處理
postcss-loader
yarn add postcss-loader -D
postcss-loader
package.json
中配置postcss.config.js
或者 postcss.config.cjs
導出一個對象的 CommonJS 模塊(推薦)postcss-loader
通常都不會使用 autoprefixer
插件而是直接使用 postcss-preset-env
應爲其內置就有自動幫助咱們添加前綴同時它能夠幫助咱們將一些現代的CSS
特性,轉成大多數瀏覽器認識的CSS,而且會根據目標瀏覽器或者運行時環境添加所需的polyfill
安裝 postcss-preset-env
yarn add postcss-preset-env -D
git
配置 同
autoprefixer
的配置方式github
舉例 添加一個 HEXA
的顏色值,若是僅僅是使用 autoprefixer
插件效果如圖: 使用
postcss-preset-env
插件: 會轉成瀏覽器都兼容的
rgba
格式web