Webpack的使用

webpack 2,3版本的網站 : https://webpack.js.org/

什么是WebPack,為什么要使用它?

WebPack可以看做是模塊打包機:它做的事情是,分析你的項目結構,找到JavaScript模塊以及其它的一些瀏覽器不能直接運行的拓展語言(Scss,TypeScript等),并將其打包為合適的格式以供瀏覽器使用。

WebPack和Grunt以及Gulp相比有什么特性

其實Webpack和另外兩個并沒有太多的可比性,Gulp/Grunt是一種能夠優化前端的開發流程的工具,而WebPack是一種模塊化的解決方案,不過Webpack的優點使得Webpack可以替代Gulp/Grunt類的工具。

Grunt和Gulp的工作方式是:在一個配置文件中,指明對某些文件進行類似編譯,組合,壓縮等任務的具體步驟,這個工具之后可以自動替你完成這些任務。


Webpack的工作方式是:把你的項目當做一個整體,通過一個給定的主文件(如:index.js),Webpack將從這個文件開始找到你的項目的所有依賴文件,使用loaders處理它們,最后打包為一個瀏覽器可識別的JavaScript文件。


如果實在要把二者進行比較,Webpack的處理速度更快更直接,能打包更多不同類型的文件。


開始使用Webpack

1.安裝

在安裝 Webpack 前,你本地環境需要支持node.js


全局安裝 npm install -g webpack

安裝到項目目錄 npm install --save-dev webpack



2.開始?

1.在終端中使用npm init命令可以自動創建這個package.json文件

2.安裝到項目目錄 npm install --save-dev webpack

3.創建兩個文件夾,app文件夾和public文件夾,app文件夾用來存放原始數據和我們將寫的JavaScript模塊,public文件夾用來存放準備給瀏覽器讀取的數據(包括使用webpack生成的打包后的js文件以及一個index.html文件)。在這里還需要創建三個文件,index.html 文件放在public文件夾中,兩個js文件(Greeter.js和main.js)放在app文件夾中,此時項目結構如下圖所示


index.html文件只有最基礎的html代碼,它唯一的目的就是加載打包后的js文件(bundle.js)


Greeter.js只包括一個用來返回包含問候信息的html元素的函數。

main.js用來把Greeter模塊返回的節點插入頁面。


正式使用Webpack

webpack可以在終端中使用,其最基礎的命令是

webpack 入口文件(例如 main.js)? 出口文件(例 bundle.js)

結果如下




通過配置文件來使用Webpack(另外一種方式)

Webpack擁有很多其它的比較高級的功能(比如說本文后面會介紹的loaders和plugins),這些功能其實都可以通過命令行模式實現,但是正如已經提到的,這樣不太方便且容易出錯的,一個更好的辦法是定義一個配置文件,這個配置文件其實也是一個簡單的JavaScript模塊,可以把所有的與構建相關的信息放在里面。

還是繼續上面的例子來說明如何寫這個配置文件,在當前練習文件夾的根目錄下新建一個名為webpack.config.js (文件名是固定的)的文件,并在其中進行最最簡單的配置,如下所示,它包含入口文件路徑和存放打包后文件的地方的路徑。

新建 webpack.config.js 配置文件

module.exports={

entry:"./src/main.js",//打包的入口

output:{

path:path.join(__dirname,'./dist/'),? //path必須是絕對路徑,用來配置資源打包的出口目錄

filename:"bundle.js",

//在打包結果中,webpack默認將內容的資源應用路徑是相對于bundle.js文件,就是

//注:這里用到的path.join()指令是node的方法,使用的話需要var path=require('path'),先 引入 才可以使用

}

}

現在如果你需要打包文件只需要在終端里你運行webpack(非全局安裝需使用node_modules/.bin/webpack)命令就可以了,這條命令會自動參考webpack.config.js文件中的配置選項打包你的項目,輸出結果如下


又學會了一種使用Webpack的方法,而且不用管那煩人的命令行參數了,有沒有感覺很爽。有沒有想過如果可以連webpack(非全局安裝需使用node_modules/.bin/webpack)這條命令都可以不用,那種感覺會不會更爽~,繼續看下文。

更快捷的執行打包任務

執行類似于node_modules/.bin/webpack這樣的命令其實是比較煩人且容易出錯的,不過值得慶幸的是npm可以引導任務執行,對其進行配置后可以使用簡單的npm start命令來代替這些繁瑣的命令。在package.json中對npm的腳本部分進行相關設置即可,設置方法如下。

{

"name": "webpack-sample-project",

"version": "1.0.0",

"description": "Sample webpack project",

"scripts": {

"build": "webpack" //配置的地方就是這里啦,運行指令可以直接寫npm run build

},

"author": "zhang",

"license": "ISC",

"devDependencies": {

"webpack": "^1.12.9"

}

}


加載css步驟

文檔? https://webpack.js.org/guides/asset-management/#loading-css

1. npm install --save-dev style-loader css-loader

2.webpack.config.js

module: {

rules: [

{

test: /\.css$/,? //正則匹配css文件解析

use: [

'style-loader',

'css-loader'? //注意:這里必須style在前 ,css在后

]

}

]

}

};

Loading Images 圖片加載

文檔? https://webpack.js.org/guides/asset-management/#loading-images

1、加載

npm install --save-dev file-loader

2.配置 webpack.config.js

{

test: /\.(png|svg|jpg|gif)$/,

use: [

'file-loader'

]

}

Webpack Sample Project




作者:zhangwang

鏈接:http://www.lxweimin.com/p/42e11515c10f

來源:簡書

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 webpack介紹和使用 一、webpack介紹 1、由來 ...
    it筱竹閱讀 11,233評論 0 21
  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,237評論 7 35
  • GitChat技術雜談 前言 本文較長,為了節省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,715評論 7 110
  • 最近在學習 Webpack,網上大多數入門教程都是基于 Webpack 1.x 版本的,我學習 Webpack 的...
    My_Oh_My閱讀 8,209評論 40 247
  • 作為一個懶癌晚期無可救藥的人,心底里突然冒出的那丟丟上進心,促使著我寫了這第一篇。從三月到九月正好滿半年,我恐怕已...
    徐月琴閱讀 114評論 0 0