webpack配置

webpack核心概念:

  • 入口(entry) 指定webpack開始構(gòu)建的入口模塊本刽,從該模塊開始構(gòu)建并計(jì)算出直接或間接依賴的模塊或者庫
  • 輸出(output)告訴webpack如何命名輸出的文件以及輸出的目錄
    path :入口文件最終要輸出到哪里母怜,
    filename:輸出文件的名稱
    publicPath:公共資源路徑
  • loader 由于webpack只能處理javascript戏挡,所以我們需要對一些非js文件處理成webpack能夠處理的模塊硕淑,比如sass文件
  • 插件(plugins)
    -chunkcoding split的產(chǎn)物彬坏,我們可以對一些代碼打包成一個單獨(dú)的chunk,比如某些公共模塊童太,去重米辐,更好的利用緩存∈槭停或者按需加載某些功能模塊翘贮,優(yōu)化加載時間。在webpack3及以前我們都利用CommonsChunkPlugin將一些公共代碼分割成一個chunk征冷,實(shí)現(xiàn)單獨(dú)加載择膝。在webpack4 中CommonsChunkPlugin被廢棄誓琼,使用SplitChunksPlugin

webpack安裝流程

  • step1:首先安裝Node.js
  • step2:通過全局先將webpack指令安裝進(jìn)電腦中npm install webpack -g npm install --save-dev webpack
  • step3:npm init(會生成一個package.json的文件)

webpack配置

  • step1: 創(chuàng)建項(xiàng)目文件夾, 例如webpack_test
  • step2: 在你的項(xiàng)目目錄下創(chuàng)建webpack.config.js配置文件, 通過這個文件進(jìn)行webpack的配置, 并且還要創(chuàng)建一些路徑保存基本文件,例如創(chuàng)建一個src文件夾检激,里面分別創(chuàng)建js,css,img文件夾
  • step3:在src的js下創(chuàng)建一個入口文件, 我創(chuàng)建的叫做entry.js, 在項(xiàng)目目錄再創(chuàng)建一個index.html用來調(diào)試使用. 編寫webpack.config.js文件,
//webpack.config.js
module.exports = {
    entry : './src/js/entry.js',//入口文件
    output : {//輸出文件
        filename : 'index.js',//輸出文件名
        path : __dirname + '/out'//輸出文件路徑
    },
}

index.html和入口文件entry.js

//index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8" />
    <title>ss</title>
</head>
<body>
111
    <script src="./out/index.js"></script>//注意在這里引入的是打包完成的js文件
</body>
</html>
//entry.js
console.log('1234');

webpack loader加載器

npm install babel-loader babel babel-core css-loader style-loader  url-loader file-loader less-loader less  --save-dev 

修改webpack.config.js文件

module.exports = {
    entry :  './src/js/entry.js',
    output : {
        filename : 'index.js',
        path : __dirname + '/out'
    },
    module : {
        rules: [
            {test: /.js$/, use: ['babel-loader']},
            {test: /.css$/, use: ['style-loader', 'css-loader']},/*解析css, 并把css添加到html的style標(biāo)簽里*/
            //{test: /.css$/, use: ExtractTextPlugin.extract({fallback: 'style-loader',use: 'css-loader'})},/*解析css, 并把css變成文件通過link標(biāo)簽引入*/
            {test: /.(jpg|png|gif|svg)$/, use: ['url-loader?limit=8192&name=./[name].[ext]']},/*解析圖片*/
            {test: /.less$/, use: ['style-loader', 'css-loader', 'less-loader']}/*解析less, 把less解析成瀏覽器可以識別的css語言*/
        ]
    },
    }

webpack插件使用

修改webpack.config.js

var webpack = require('webpack');
var webpack = require('webpack');
var uglifyPlugin = new webpack.optimize.UglifyJsPlugin({minimize: true});//代碼壓縮

var CommonsChunkPlugin = new webpack.optimize.CommonsChunkPlugin('common');//把公共模塊提取出來, 并取名為'common'(名字自起), webpack之后再out文件夾下生成common.js, 測試時記得引入提取出來的公共模塊js文件

var ExtractTextPlugin = require("extract-text-webpack-plugin");//將css獨(dú)立引入變成link標(biāo)簽形式, 使用該插件需要獨(dú)立下載'npm install extract-text-webpack-plugin --save-dev', 同時下面的rules也必須更改

var providePlugin = new webpack.ProvidePlugin({$: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery'});//引入jquery



module.exports = {
    entry : {index: './src/js/entry.js', index2: './src/js/entry2.js'},
    output : {
        filename : '[name].js',
        publicPath: __dirname + '/out',
        path : __dirname + '/out'
    },
    module : {
        rules: [
            {test: /.js$/, use: ['babel-loader']},
            //{test: /.css$/, use: ['style-loader', 'css-loader']},
            {test: /.css$/, use: ExtractTextPlugin.extract({fallback: 'style-loader',use: 'css-loader'})},
            {test: /.(jpg|png|gif|svg)$/, use: ['url-loader?limit=8192&name=./[name].[ext]']},
            {test: /.less$/, use: ['style-loader', 'css-loader', 'less-loader']}
        ]
    },
    plugins: [uglifyPlugin, CommonsChunkPlugin, new ExtractTextPlugin('[name].css'),providePlugin]//插件集合
}

webpack服務(wù)器

首先先定位目錄輸入命令 npm install webpack-dev-server -g, 修改webpack.config.js文件

publicPath: 'http://localhost:8080/out',

package.json

{
  "name": "pmall",
  "version": "4.2.6",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "cross-env NODE_ENV=development webpack-dev-server --open --port 4000 --hot --host 0.0.0.0 --content-base ./build --config ./build/webpack.config.dev.js"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "vue": "^2.5.3"
  },
  "devDependencies": {
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-stage-0": "^6.24.1",
    "babel-preset-stage-2": "^6.24.1",
    "babel-runtime": "^6.26.0",
    "cross-env": "^5.1.1",
    "css-loader": "^0.28.7",
    "extract-text-webpack-plugin": "^3.0.2",
    "file-loader": "^1.1.5",
    "html-loader": "^0.5.1",
    "html-webpack-plugin": "^2.30.1",
    "node-sass": "^4.6.0",
    "postcss-loader": "^2.0.9",
    "sass-loader": "^6.0.6",
    "style-loader": "^0.19.0",
    "uglifyjs-webpack-plugin": "^1.0.1",
    "url-loader": "^0.6.2",
    "vue-loader": "^13.4.0",
    "vue-router": "^3.0.1",
    "vue-template-compiler": "^2.5.3",
    "webpack": "^3.8.1",
    "webpack-dev-server": "^2.9.4"
  },
  "description": ""
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末肴捉,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子叔收,更是在濱河造成了極大的恐慌齿穗,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饺律,死亡現(xiàn)場離奇詭異窃页,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)复濒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門脖卖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巧颈,你說我怎么就攤上這事畦木。” “怎么了砸泛?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵十籍,是天一觀的道長。 經(jīng)常有香客問我唇礁,道長勾栗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任盏筐,我火速辦了婚禮围俘,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘琢融。我一直安慰自己楷拳,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布吏奸。 她就那樣靜靜地躺著欢揖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪奋蔚。 梳的紋絲不亂的頭發(fā)上她混,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天,我揣著相機(jī)與錄音泊碑,去河邊找鬼坤按。 笑死,一個胖子當(dāng)著我的面吹牛馒过,可吹牛的內(nèi)容都是我干的臭脓。 我是一名探鬼主播,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼腹忽,長吁一口氣:“原來是場噩夢啊……” “哼来累!你這毒婦竟也來了砚作?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤嘹锁,失蹤者是張志新(化名)和其女友劉穎葫录,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體领猾,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡米同,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了摔竿。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片面粮。...
    茶點(diǎn)故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖继低,靈堂內(nèi)的尸體忽然破棺而出但金,到底是詐尸還是另有隱情,我是刑警寧澤郁季,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布冷溃,位于F島的核電站,受9級特大地震影響梦裂,放射性物質(zhì)發(fā)生泄漏似枕。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一年柠、第九天 我趴在偏房一處隱蔽的房頂上張望凿歼。 院中可真熱鬧,春花似錦冗恨、人聲如沸答憔。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虐拓。三九已至,卻和暖如春傲武,著一層夾襖步出監(jiān)牢的瞬間蓉驹,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工揪利, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留态兴,地道東北人。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓疟位,卻偏偏與公主長得像瞻润,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,781評論 2 361