原文發表於: www.rails365.netjavascript
如今咱們要先把 webpack 用起來。java
爲了方便,咱們先用 npm 建立一個空項目。node
打開終端,運行以下命令:webpack
# 隨便進一個目錄
$ cd ~/codes
# 建立一個存放 webpack 項目的目錄,名爲 hello-webpack
$ mkdir hello-webpack
$ npm init複製代碼
以後你會看到會提示你輸入一些內容,你不用管,直接所有回車:git
name: (hello-wepback)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:複製代碼
最後,你會發現 hello-webpack
目錄下多出了一個名爲 package.json
的文件。web
它的內容以下:npm
{
"name": "hello-wepback",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}複製代碼
整個 json 文件的內容很簡單,主要是顯示這個項目的名稱、版本、做者、協議等信息,一看就能很清晰。json
具體的信息這裏咱們先按下不表,之後咱們會跟這個文件常常打交道的。bash
如今項目是空的,沒有任何東西,咱們如今須要把 webpack 集成進來,讓這個項目能夠用這個 webpack。app
咱們在終端上輸入以下命令:
$ npm install --save-dev webpack複製代碼
你會看到正在安裝 webpack 的進度,稍等片刻,成功以後,咱們再來看看 package.json
這個文件的內容。
{
"name": "hello-wepback",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^3.8.1"
}
}複製代碼
多了下面這幾行:
"devDependencies": {
"webpack": "^3.8.1"
}複製代碼
什麼意思呢?就是說,我如今這個項目依賴於 webpack 這個工具,就算之後別人獲得這個 package.json
文件,就會知道要安裝這個 webpack 了。
同時你也會發現,多了一個目錄,叫 node_modules
,這個就是放剛纔安裝的 webpack 這個庫的全部要用到的源碼文件。
這點先了解這麼多,其實知道大概的意思就行。
如今項目建立了,webpack 也集成到項目中了,該是要把 webpack 玩起來的時候了。
首先建立一個目錄叫 src
,而後在該目錄下建立 javascript 文件,叫 app.js
。
這個文件的內容最簡單,就輸出 hello world
,以下所示:
console.log('hello world');複製代碼
如今要把剛纔的 js 文件用 webpack 編譯一下。
編譯後輸出的文件,咱們放到一個目錄中,就叫 dist
好了。
先把這個目錄建立好。
如今的目錄結構是這樣的:
.
├── dist
├── node_modules
├── package.json
└── src
└── app.js複製代碼
OK,如今開始轉化,在終端上輸入以下命令:
$ webpack ./src/app.js ./dist/app.bundle.js複製代碼
意思就是說,把 ./src/app.js
做爲源文件,把轉化後的結果放到 ./dist/app.bundle.js
文件中。
下面是輸出的結果:
成功了!
果真,在 dist
目錄下生成了 app.bundle.js
文件。
它的內容以下:
大約總共有 74 行,大小約是2.5 kb,能夠看出多出了很多東西,但至少 hello world
那一行源碼被包含進來了。
具體的內容,你打開轉化後的文件看看就知道了。
上面介紹的只是 webpack 一個最簡單的功能,它可不止有這個用法,還有其餘的,咱們來介紹一下。
首先,在開發環境中,老是要一邊改,一邊看轉化效果吧,webpack 也能辦到,多加一個參數就好。
$ webpack --watch ./src/app.js ./dist/app.bundle.js複製代碼
輸出效果:
如今去改改 src/app.js
文件的內容,試試效果,看看 dist/app.bundle.js
是否實時變化了。
以前轉化的 app.bundle.js
文件大約有 74 行代碼,差很少 2k 多的大小,好大啊,畢竟咱們的代碼只有一行而已。
在生產環境,或線上,咱們確定不但願這麼大的體積,畢竟體積越大,帶寬浪費就越多呀,下載也越慢。
若是要發佈到線上環境,咱們要把它壓縮一下的。
而 webpack 原本就有這樣的功能,也只是一個參數 -p
$ webpack -p ./src/app.js ./dist/app.bundle.js複製代碼
輸出以下:
能夠看到,輸出的文件相比之前的 2.5 kb 小了一些,大約 505 個字節。
咱們打開來看下:
好了,先說這麼多吧。