webpack入門(1)-「圖解什麼是webpack」傳送門前端
npm init
初始化一個文件夾,出現對話框按肯定就行。npm install --global webpack
全局安裝,在c盤下會生成node_modules文件夾中會包含webpack。請注意,這不是推薦的作法。全局安裝會將您鎖定到特定版本的webpack,而且在使用不一樣版本的項目中可能會失敗。
官方並不推薦全局安裝。npm install --save-dev webpack
安裝在本地開發環境中npm install --save-dev webpack-cli
webpack4以後要安裝cli。把cli安裝到開發環境中。-D
就是--save-dev
的縮寫src
文件,下面新建一個main.js
文件。webpack.config.js
文件。爲何要建這個文件,由於直接使用webpack
,它會尋找webpack.config.js
把它當成默認的配置去運行。此時它不須要指定任何參數,就能讀取裏面的內容。// webpack.config.js
module.exports = {
entry: __dirname + '/src/main.js',//我指定了入口文件,在src/main.js
output: {
path: __dirname + '/dist', //打包後指定存放的目錄,放在dist
filename: 'bundle.js' //打包後的文件叫bundle.js
}
}
複製代碼
__dirname是Node.js中一個全局變量,它指向當前執行腳本所在的目錄。
有多個入口文件的時候: node![]()
webpack.config.js
,你想運行其餘的配置文件,好比config.js
文件。你能夠運行webpack --config config.js
,這樣它就會尋找config.js
,而且運行它。webpack
,它會自動的尋找webpack.config.js
,找到其中的入口文件好比上面的main.js
。webpack --progress
能夠看到打包的進度。webpack --progress --display-modules
能夠看到打包有幾個模塊,模塊的信息。webpack ---progress --display-modules --display-reasons
打包的緣由顯示出來。package.json
。如今找到根目錄下的package.json
文件。
scripts
下添加定義一個腳本,"dev":"webpack --config webpack.config.js --progress --display-modules --colors --display-reasons"
複製代碼
npm run dev
由於scripts腳本提供了命令的「別名」,像上面的以一個「dev」命令代替了一連串的命令,使用起來更爲方便,即使你沒有在命令行輸入以上的配置,你依然能夠看到打包的進度;以看到打包有幾個模塊,模塊的信息;字體爲彩色;打包的緣由。由於你在配置文件下定義了,就不須要了。webpack main.js bundle.js
在這個例子當中,main.js
是入口文件,bundle.js
打包完以後的文件。webpack.config.js
裏寫配置。module.exports = {
entry: __dirname + "/app/main.js",//惟一入口文件
output: {
path: __dirname + "/public",//打包後的文件存放的地方
filename: "bundle.js"//打包後輸出文件的文件名
}
}
複製代碼
咱們只須要輸入webpack
命令,webpack就能本身找到webpack.config.js
,在找出入口,找到output,執行打包。webpack
package.json
裏找到「scripts」腳本,添加"start": "webpack --config webpack.config.js --progress --display-modules --colors --display-reasons"
複製代碼
而後咱們只須要npm start
就能夠打包了。git
須要注意的是,「start」在npm中比較特殊,只需npm start 就能夠執行命令。若是是非start,還要再在前面加上一個run ,好比npm run dev,npm run build github
由於webpack
對源代碼進行打包後,會對源代碼進行壓縮、精簡、甚至變量名替換,在瀏覽器中,沒法對代碼逐行打斷點進行調試,全部須要使用source maps
進行調試,它使得咱們在瀏覽器中能夠看到源代碼,進而逐行打斷點調試。web
在配置中添加devtool
屬性,賦值爲source-map
或者inline-source-map
便可,後者報錯信息更加具體,會指示源代碼中的具體錯誤位置,而source-map
選項沒法指示到源代碼中的具體位置。npm
用開發工具能夠簡化開發過程的工做。好比你寫完代碼後保存開發工具能夠自動幫你執行一系列的命令。json
在使用webpack-cli
進行打包時,經過命令webpack --watch
便可開啓watch
模式,進入watch
模式以後,一旦依賴樹中的某一個模塊發生了變化,webpack
就會從新進行編譯。瀏覽器
瀏覽器監聽你的代碼的修改,並自動刷新顯示修改後的結果。它是一個單獨的組件,在webpack中進行配置以前須要單獨安裝它做爲項目依賴。bash
npm install --save-dev webpack-dev-server
devServer
屬性// webpack.config.js
module.exports = {
devServer: {
contentBase: './dist',//本地服務器所加載的頁面所在目錄
historyApiFallback: true,//不跳轉
inline: true //實時刷新
}
};
複製代碼
package.json
添加腳本// package.json
{
"scripts": {
"start": "webpack-dev-server --open"
}
}
複製代碼
npm run start
便可在本地的8080端口查看結果。webpack很難啃,我是在網上找資料看視頻,一點一點摸索。網上的資料時間維度大,有的還在講webpack1.0,有的在講最新版的webpack,因此在整理的時候不免有出錯的地方。歡迎在下方評論指出錯誤!
未完待續...
歡迎訪問個人博客,會分享一些技術文章,一塊兒學習前端。