webpack-----基本配置

webpack

前身 browserify现柠,缺點只能轉化js

一功咒、作用:

一切都是模塊化 webpack相當于一個模塊加載器/打包工具(js,css,圖片等)

二弧可、安裝:

  1. 安裝webpack命令環(huán)境
  sudo cnpm install webpack -g  
  驗證方法
  webpack --version
  1. package.json 工程文件(需要依賴的模塊屎慢,作者履怯,版本等)
    1. 手動生成
    2. 在目錄中 npm init 一路默認
  2. 安裝本地的webpack
-D 相當于 --save-dev
cnpm install webpack -D

三、webpack第一個小例子

  1. index.html 頁面
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <title>webpack-demo</title>
 </head>
 <body>
     <div id="app"></div>
     <script src="bundle.js"></script>
 </body>
 </html>
  1. entry.js 入口文件
 編寫我們開發(fā)的代碼
 var oApp = document.getElementById('app');
 oApp.innerHTML = "新增內(nèi)容";
  1. 將entry.js編譯成 bundle.js
 webpack entry.js bundle.js
 然后運行 index.html看效果
  1. 自動解決依賴例子
    1.新建a.js

      module.exports = 'laozhou.com';
    

    2.修改entry.js為

    var a = require('./a.js');//引入新模塊
    var oApp = document.getElementById('app');
    oApp.innerHTML = "新增內(nèi)容"+a;
    

    3.測試運行index.html

    新增內(nèi)容laozhou.com
    

四拼窥、加載除了js以外的文件,需要各種文件的loader加載器

  1. css文件:

    1.創(chuàng)建index.css樣式文件

    body{
      background:red;
    }
    

    2.需要安裝對應的loader(style-loader蹋凝、css-loader)

    cnpm install style-loader css-loader -D
    

    3.配置

    在webpack中一個文件可能用多個loader加載鲁纠,!理解為用來連接多個loader
    require('style-loader!css-loader!./index.css')  
    

    4.重新編譯

    webpack entry.js bundle.js
    

五、配置webpack.config.js

  1. 作用:配置webpack的入口文件鳍寂,出口文件

    module.exports = {
        entry:'./entry.js',//入口文件
        output:{
            filename:'./bundle.js',//出口
        }
    }
    
    下次再編譯的時候不需要
    webpack entry.js bundle.js改含,只需要
    webpack 就可以了
    
  2. 配置 css-loader

     module.exports = {
         entry:'./entry.js',//入口文件
         output:{
             filename:'./bundle.js',//出口
         },
         module:{
             loaders:[
                 /\.css$/:正則以css結尾的文件使用style-loader和css-loader
                 {test:/\.css$/,loader:'style-loader!css-loader'}
             ]
         }
     }
    
     entry.js
     require('./index.css');
    
  3. 支持less

    //1.安裝
    
    npm install less-loader less --save-dev
    
    //2.修改配置
    
    webpack.config.js
    
    {
        test:/\.less$/,
        loader:'style-loader!css-loader!less-loader'
    }
     //3. 打包
    
    執(zhí)行打包
    
    webpack
    
  4. 支持sass

    //1.安裝
    
    npm install sass-loader sass --save-dev
    
    //2.修改配置
    
    webpack.config.js
    
    {
        test:/\.sass$/,
        loader:'style-loader!css-loader!sass-loader'
    }
    //3. 打包
    執(zhí)行打包
    webpack
    
  5. 自動加瀏覽器前綴 postcss-loader配置

    //1.安裝postcss
    npm install -D postcss-loader
    //2. webpack.config.js
    {
      test:/\.less$/,
      loader:'style-loader!css-loader!postcss-loader!less-loader'
      //postcss-loader的位置不能變
    },
    
    //3. 在webpack.config.js同級目錄創(chuàng)建postcss.config.js 的配置文件,內(nèi)容如下
    module.exports = {
      plugins: [
        require('autoprefixer')({browsers:'ios >= 8'})
     ]
    }
    
    //4. 運行 num run dev測試
    

五迄汛、處理圖片文件

    //1. 安裝
    npm install -D file-loader
    //2. webpack.config.js
    {
        test:/\.(png|jpg|gif|svg)/i,
        loader:'file-loader',
        //指定打包后的圖片的存放位置及命名規(guī)則
        name:'image/[name]-[hash:5].[ext]'
    }

六捍壤、url-loader 可以處理文件或圖片。當文件或圖片的大小大于你設定的限定時鞍爱,交給 file-loader處理鹃觉,當小于設定時變成base-64編碼

    //1. 安裝
    npm install -D url-loader
    //2. webpack.config.js
    {
        test:/\.(png|jpg|gif|svg)/i,
        loader:'url-loader',
        query:{
            limit:20000,
            name:'image/[name]-[hash:5].[ext]'
        }
    }

七、image-webpack-loader 壓縮圖片

    //1.安裝
    npm install -D image-webpack-loader
    //2. webpack.config.js
    {
        test:/\.(png|jpg|gif|svg)/i,
        loaders:[
            'url-loader?limit=20000&name=image/[name]-[hash:5].[ext]',
            'image-webpack-loader'
        ]
    }

八睹逃、自動打包

webpack 相當于是開發(fā)環(huán)境下的編譯打包
webpack -p 會進行代碼壓縮盗扇,生產(chǎn)環(huán)境下的編譯打包
webpack -w 監(jiān)聽文件的改動,自動編譯
webpack -d 開啟(生成)source maps (在chrome中可以看到編譯過程沉填,方便調(diào)試) 在 source選項卡中可見

可以再配置項中加入 "devtool":"source-map"
module.exports = {
    entry:'./entry.js',//入口文件
    output:{
      filename:'./bundle.js',//出口
  },
  devtool:"source-map",
  module:{
      loaders:[
          {test:/\.css$/,loader:'style-loader!css-loader'}
      ]
  }
}
  • webpack --config config.js
    如果不用webpack.config.js疗隶,自己定義的名字叫 config.js

七、babel配置將ES6轉化為ES5

  1. 安裝所需模塊

    cnpm install babel-loader babel-core babel-preset-es2015 -D
    
  2. es6中模塊導出及引入方式

    導出模塊:
       export default{}
    引入模塊:
      import 名字 from 模塊路徑
    
  3. 測試bable是否可用翼闹,使用es6語法

    1. 新建b.js

      export default{
        a:1,
        b:2
      }  
      
    2. 修改entry.js

      var a = require('./a');
      require('./index.css');
      import es6 from './b';
      
      var oApp = document.getElementById('app');
      
      oApp.innerHTML = "新增內(nèi)容" + a + es6.a +es6.b;
      
    3. babel配置

      module.exports = {
          entry: './entry.js',//入口文件
          output: {
              filename: './bundle.js',//出口
          },
          devtool: "source-map",
          module: {
             loaders: [
          {
                test: /\.css$/,
                loader: 'style-loader!css-loader'
          },
          {
                test:/\.js$/,
                loader:'babel-loader',
                exclude:/node_modules/,
                query: {
                    presets: ['es2015']
                }
              }
            ]
        },
      }
      

八斑鼻、webpack-dev-server

  1. 安裝命令環(huán)境:

    sudo cnpm install webpack-dev-server -g
    
  2. 運行

    • webpack-dev-server

    • webpack-dev-server --port 端口號

    • webpack-dev-server --inline 改變完代碼自動刷新瀏覽器

    • webpack-dev-server --hot 熱重載(相當于局部刷新)

      webpack-dev-server --port 8081 --inline --hot  
      
  3. 將啟動參數(shù)寫入到配置文件中,增加devServer配置項

    webpack.config.js修改如下
    devServer:{
       port:8080,
       inline:true,
    },
    
  4. 把運行的命令放入package.json文件中, npm run dev

"scripts":{ "dev":"webpack-dev-server" }
  1. resolve:配置省略文件名后綴猎荠,別名等
在webpack.config.js中加入 resolve配置項
resolve:{
   "extensions":['.js','.css','.json'] //可以省略的擴展名
}

九坚弱、直接打開瀏覽器

npm install -D open-browser-webpack-plugin
var OpenBrowserPlugin = require('open-browser-webpack-plugin');

plugins: [
    new OpenBrowserPlugin({ url: 'http://localhost:8080' })
    ]
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市关摇,隨后出現(xiàn)的幾起案子史汗,更是在濱河造成了極大的恐慌,老刑警劉巖拒垃,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件停撞,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機戈毒,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門艰猬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人埋市,你說我怎么就攤上這事冠桃。” “怎么了道宅?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵食听,是天一觀的道長。 經(jīng)常有香客問我污茵,道長樱报,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任泞当,我火速辦了婚禮迹蛤,結果婚禮上,老公的妹妹穿的比我還像新娘襟士。我一直安慰自己盗飒,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布陋桂。 她就那樣靜靜地躺著逆趣,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗜历。 梳的紋絲不亂的頭發(fā)上汗贫,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天,我揣著相機與錄音秸脱,去河邊找鬼落包。 笑死,一個胖子當著我的面吹牛摊唇,可吹牛的內(nèi)容都是我干的咐蝇。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼巷查,長吁一口氣:“原來是場噩夢啊……” “哼有序!你這毒婦竟也來了?” 一聲冷哼從身側響起岛请,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤旭寿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后崇败,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盅称,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡肩祥,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了缩膝。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片混狠。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖疾层,靈堂內(nèi)的尸體忽然破棺而出将饺,到底是詐尸還是另有隱情,我是刑警寧澤痛黎,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布予弧,位于F島的核電站,受9級特大地震影響湖饱,放射性物質(zhì)發(fā)生泄漏掖蛤。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一琉历、第九天 我趴在偏房一處隱蔽的房頂上張望坠七。 院中可真熱鬧水醋,春花似錦旗笔、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惶桐,卻和暖如春撮弧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背姚糊。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工贿衍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人救恨。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓贸辈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肠槽。 傳聞我的和親對象是個殘疾皇子擎淤,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 無意中看到zhangwnag大佬分享的webpack教程感覺受益匪淺,特此分享以備自己日后查看秸仙,也希望更多的人看到...
    小小字符閱讀 8,147評論 7 35
  • GitChat技術雜談 前言 本文較長嘴拢,為了節(jié)省你的閱讀時間,在文前列寫作思路如下: 什么是 webpack寂纪,它要...
    蕭玄辭閱讀 12,679評論 7 110
  • Webpack學習總結 此文只是自己學習webpack的一些總結席吴,方便自己查閱,閱讀不變,非常抱歉G栏姑曙! 下載安裝:...
    Lxs_597閱讀 936評論 0 0
  • 可以結合慕課網(wǎng)的視頻來讀這篇文章,地址:http://www.imooc.com/learn/802 Webpac...
    哈哈騰飛閱讀 1,866評論 0 7
  • 美,無處不在啼染,往往是我們被自己蒙蔽了宴合,視而不見聽而不聞。 小小嬰兒牙牙學語之時迹鹅,那雙明亮清澈的眼睛卦洽,看到所有的東西...
    夕夕子月閱讀 237評論 1 1