初始化項目: package.jsonjavascript
{ "name": "webpack_test", "version": "1.0.0" }
安裝webpackcss
npm install webpack@1 -g //全局安裝 npm install webpack@1 --save-dev //局部安裝
建立入口src/js/ : entry.jshtml
document.write("entry.js is work");
建立主頁面 build/: index.html前端
<script type="text/javascript" src="js/build.js"></script>
編譯jsjava
webpack src/js/entry.js build/js/build.js
建立第二個js: src/js/content.jsnode
module.exports = " <br> It works from content.js";
更新入口js : entry.jswebpack
* document.write("entry.js is works."); * document.write(require("./content.js"));
編譯js:git
webpack src/js/entry.js build/js/build.js
安裝樣式的loadergithub
npm install css-loader style-loader --save-dev
建立樣式文件: src/css/test.cssweb
body { background: red; }
更新入口js : entry.js
+ require("style-loader!css-loader!../css/test.css"); * document.write("entry.js is works."); * document.write(require("./content.js"));
編譯js, 並查看頁面效果
webpack src/js/entry.js build/js/bundle.js
更新入口js : entry.js
- require("style-loader!css-loader!./test.css"); + require("./test.css");
編譯:
webpack src/js/entry.js build/js/bundle.js --module-bind css=style-loader!css-loader
建立webpack.config.js
module.exports = { entry: "./src/js/entry.js",//入口路徑配置 output: {//出口配置 path: __dirname + '/build/js',//輸出路徑 filename: "bundle.js"//輸出文件名 }, module: { loaders: [//模塊加載器配置 { test: /\.css$/, loader: "style!css"} //全部css文件聲明使用css-loader和style-loader加載器 ] } };
編譯
webpack webpack --progress //編譯顯示進度
自動編譯
webpack --watch //編譯並啓動監視(但須要刷新瀏覽器)
瀏覽器自動刷新(熱加載)----解決手動刷新瀏覽器問題
npm install webpack-dev-server@1 -g webpack-dev-server 訪問: http://localhost:8080/webpack-dev-server/ ; http://localhost:8080 !!!發現問題----訪問的是文件夾路徑而不是頁面 devServer:{ contentBase: './build',//內置服務器動態加載頁面所在的目錄 historyApiFallback:true,//不跳轉 inline:true } contentBase : 默認webpack-dev-server爲根文件夾提供內置的服務,若是其餘目錄下的文件 提供服務須要在此設置目錄(咱們設置爲build文件夾) historyApiFallback : 開發單頁面的時候很是有用,它依賴於H5的 history API,當 設置爲true的時候全部的跳轉都指向index.html; port:能夠設置端口號,不設置時候默認爲 8080 inline : 設置爲true的時候回自動刷新(有的版本須要配合hot : true使用) webpack-dev-server 訪問: http://localhost:8080 問題:頁面沒有熱加載,自動刷新,由於index的src引入的硬盤中的build文件而不是webpack-dev-server服務器內存中的build 特色: 自動編譯並刷新界面 不生成編譯後的文件, 直接在內存中編譯處理, 並啓動服務器運行項目
安裝依賴的loader
npm install url-loader file-loader --save-dev url-loader比file-loader功能更加完善是對file-loader的上層封裝,但兩者需配合使用
添加config中loader的配置
{ test: /\.(png|jpg)$/, loader: "url-loader?limit=8192" } //若是圖片小於limit就會進行Base64編碼
定義引用圖片的樣式: test.css
#box1{ background-image: url(../img/logo.jpg); height: 200px; width: 200px; } #box2{ background-image: url(../img/big.jpg); height: 200px; width: 200px; }
在頁面引用樣式或圖片: index.html
<div id="box1"></div> <div id="box2"></div>
編譯並瀏覽
webpack-dev-server
一、圖片大於8kb的時候沒法打包到js文件中, 二、index.html引入js的時候發現沒有打包進去的圖片路徑不對 三、解決方法: * //publicPath : './js/',//webpack的絕對路徑,設置服務index.html資源的路徑
配置npm script命令
"scripts": { "start": "webpack-dev-server", "build": "webpack" } npm start: 編譯運行項目 npm build: 編譯打包