webpack學習(四)— webpack-dev-server


 webpack提供給我們檢查壓縮代碼的功能之外,還提供了1個服務器的插件,這就是webpack-dev-server,利用這個差價我們可以啟動個web服務器並時時更新我們的修改。

下面以1個簡單的例子說明,項目結構:

 

package.json

{
  "name": "webpack",
  "version": "1.0.0",
  "description": "測試webpack",
  "main": "index.js",
  "scripts": {
    "build": "webpack",
    "dev": "webpack-dev-server --inline --hot --config webpack.config.js"
  },
  "author": "zouqin",
  "license": "ISC",
  "devDependencies": {
    "css-loader": "^0.21.0",
    "style-loader": "^0.13.0",
    "webpack": "^1.12.2",
    "webpack-dev-server": "^1.16.2"
  }
}

 webpack.config.js

var path = require("path");
module.exports = {
  entry:[
    './js/app.js'
  ],
  output: {
    path: path.resolve('./', "dist"),
    publicPath: "build",
    filename: "bundle.js"
  }
};

  index.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title></title>
        
    </head>
    <body>
        <h1>我是h1標簽</h1>
        <script src="build/bundle.js"></script>
    </body>
</html>

  js/app.js

document.getElementsByTagName('h1')[0].style.background='#0f0';

  

  -------------

  以上的目錄文件建好之后,用 npm install 安裝package.json中聲明的依賴。這時候項目根目錄下就會生成node_modules文件夾。

  接下來,就啟動webpack-dev-server。命令參見package.json下的 "scripts"項,用: 

 npm run dev

  相當於運行了 

 webpack-dev-server --inline --hot --config webpack.config.js  

  還有另外一種方式:在項目根目錄下運行:

node node_modules/.bin/webpack-dev-server  

  這其實說明了我們的webpack命令是來自node_modules/.bin/webpack-dev-server。我們看github webpack-dev-server官網

  

  本項目用的在inline模式,沒有嵌在frame中。默認的端口號是8080,所以訪問地址是:http://localhost:8080/index.html

  webpack-dev-server是一個小型的Node.js Express服務器【1】。既然這樣,很多配置是可以設置的。啟動端口號可以設置的,下面這個就在8000端口啟動:

webpack-dev-server --port 8000 --devtool eval --progress --colors --hot --inline

  

  

  注意:

  1)webpack.config.js中的output項,可以這么理解:path是打包的項目路徑,用webpack -p 執行。publicPath是webpack-dev-server的路徑。

  2)webpack-dev-server他將打包后的存在內存中,並沒有在工作區生成一個文件。打包文件用,用webpack -p 命令。

  3)--hot 是熱加載,也就是說,當我們改動文件后保存,瀏覽器已經自動刷新了我們的修改,不需要按F5,這在我們開發時很方便

  4)修改index.html文件,並不會熱加載。熱加載相關的是入口文件,本例中的是js/app.js文件,修改這個文件,會熱加載。

  5) 本例沒有用css,用了css,並在入口文件js/app.js中require,修改css。也會熱加載。同理,如果用了HTML的插件,在入口文件中引入,也會熱加載。

  6)網上的好多例子,在webpack.config.js這么寫:

  

  entry: [
      'webpack/hot/only-dev-server',
      "./js/app.js"
    ],

  多了個'webpack/hot/only-dev-server',實踐下來發現去掉完全可以。

  參考

  【1】https://segmentfault.com/a/1190000006964335

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM