隨着前端的項目愈來愈龐大複雜,js代碼再也不像過去那樣簡單,而是變得十分龐大,特別是當單頁應用的出現,一個前端的項目可能須要大量的模塊來支持,這就致使你的項目的代碼文件的會很是的多,這個時候項目初次加載性能方面肯能會比較差,這個時候就須要使用一些優化手段,好比說webpack打包。html
npm install -g webpack@3.3.5
webpack -v
就會顯示版本號咱們以前在cmd中輸入的一些內容就在這裏了,做者、版本號、描述均可以在這裏進行修改。前端
而後咱們就能夠開始局部安裝webpack了在項目文件的cmd中輸入npm i -s-dev webpack@3.6.0就能夠了安裝成功後咱們會在package.json中看到這麼一段代碼 node
若是安裝報錯那麼注意三個問題webpack
當咱們上面的安裝步驟完成以後咱們的項目的目錄會變成這樣:git
在開始建立咱們的項目以前咱們先來安裝一個插件live-server安裝方法以下:web
打開cmd在其中輸入npm i -g live-server
這個是安裝全局的live-server。npm
那麼接下來就能夠開始咱們項目的構造了:json
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="a"></div> <script src="bundle.js"></script>
</body>
</html>
複製代碼
document.getElementById('a').innerHTML='<h1>你好webpack</h1>'複製代碼
//簡單的解釋一下這個命令就是將src下的main.js文件打包到dist下打包後的文件名叫bundle.js
webpack src/main.js dist/bundle.js
複製代碼
打開dist,就能夠看見你好webpack瀏覽器
到這裏咱們的webpack項目已經搭建完畢也首次的打包好了咱們的項目。bash
上面的一通操做雖然也是將咱們的項目成功的打包,可是操做的方式很麻煩,可是在真正的項目項目中是不會使用這種方法來打包,太low了不夠酷炫,接下就使用一個酷炫的方法來進行打包,那就是經過配置文件的方法來進行打包。
可是若是咱們想要玩這個操做的話首先得會一點node的知識,就是node的核心模塊的使用,不須要知道的太多隻須要知道怎麼導入核心模塊,而後path這個具名模塊有什麼用就好了。
//引入node的path模塊,path這個模塊其實也就是取到文件的路徑進行各類操做const path=require('path');module.exports={ //項目入口 entry:{ //這裏的entry的內容就是你的入口文件的文件路徑 entry:'./src/main.js' }, //出口 output:{ //這裏的path的這個方法是獲取文件的絕對路徑 //這個__dirname是node的一個全局變量他的做用就是存儲文件所在目錄的完整路徑 //這樣作是爲了方便項目的開發 path:path.resolve(__dirname,'dist'), //這filename就是打包後的文件名稱 filename:'bundle.js' }}複製代碼
若是說這個配置的打包方式就只有這個功能的話,那可能還體現不出來它的優點那麼接下來的的這個操做就能夠明顯體現出它的優點了,若是說我想要一次打包多個文件呢?
//引入node的path模塊 const path=require('path');module.exports={ //項目入口 entry:{ //這裏的entry的內容就是你的入口文件的文件路徑 //這裏的 main:'./src/main.js', main1:'./src/main1.js'
}, //出口 output:{ path:path.resolve(__dirname,'dist'), //這filename使用[name].js就是設置打包好以後的文件和入口文件路徑所設置的名字同名 filename:'[name].js' }}複製代碼
上面的項目我所使用的服務器是live-server這個服務器,其實webpack本身是有服務器的這個服務器,並且很是方便與開發,由於他支持熱部署,接下來我來介紹一下這個怎麼使用。
打開cmd切換到項目輸入npm install webpack-dev-server@2.8.2 --save-dev
注意我這裏是選擇了版本的,若是你不去寫版本的話,他會直接給你安裝webpack4的webpack-dev-server,這個和webpack3是徹底不一樣,webpack4和webpack3徹底不同,雖然都是webpack。
你若是想要使用webpack-dev-server那麼你首先得有webpack.config.js這個webpack的配置文件,我接下來的內容是接着上面的項目繼續改造的。
你須要在webpack.config.js添加上devServer這個對象
//引入node的path模塊 const path=require('path');module.exports={ //項目入口 entry:{ //這裏的entry的內容就是你的入口文件的文件路徑 //這裏的 main:'./src/main.js', main1:'./src/main1.js'
}, //出口 output:{ path:path.resolve(__dirname,'dist'), //這filename使用[name].js就是設置打包好以後的文件和入口文件路徑所設置的名字同名 filename:'[name].js' }, module:{}, plugins:[], devServer:{ //你所須要服務的項目的更新 contentBase:path.resolve(__dirname,'dist'), //服務器ip地址 host:'192.168.5.100', //服務器壓縮 compress:true, //項目端口號 port:8080 }}複製代碼
這樣就算是把配置文件寫好了接下來就是須要在package.js中去寫一下命令由於你直接在cmd中去輸入命令webpack-dev-server是沒有用的在scripts中配置一下你
package.json
{ "name": "webpacktest", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "server": "webpack-dev-server" }, "author": "", "license": "ISC", "devDependencies": { "webpack": "^3.6.0", "webpack-dev-server": "^2.8.2" }}
複製代碼
最後在cmd中去輸入命令npm run server,這樣webpack-dev-server服務器就動了!
注意:webpack-dev-server雖然支持熱部署可是你須要注意下你的webpack的版本,若是你的版本是3.6.0一下的那麼webpack-dev-server是不支持熱部署的。
這個暫時就先到這裏,下一篇內容主要就是項目中經常使用的一些操做了!