[Webpack並不難]把它當人物養成遊戲吧。

徒步上山看日出發表於2019-02-16

前言

  • 這段可以跳過看下面的。
  • 本來,這個教程想完結的了。但回頭看自己寫的,感覺就像寫明瞭什麼意思,具體怎麼使用都沒說明白,而且讓人看得會有點乏味吧。
  • 我也是剛開始寫文章,在學習怎樣可以寫好有趣味性而且學東西起來又不枯燥的文章,一步一步堅持走下去咯。

序言

  • 剛接觸 webpack 的人,會覺得蠻複雜的哦,網上的教程都是列出一堆選項和配置 (我寫的也是這樣….哈哈),那麼就會等有時間再去看看吧。我剛學也是這樣。這念頭是不行的哦,後來啃文件和看網上教程,自己動手配置。發覺 webpack其實真的不難,畢竟它是一個工具,如果用起來都不順手,那為什麼那麼多人用,是不是。
  • 找對學習的方法,才容易理解它。我覺得可以把 webpack 當成人物養成遊戲來玩,哦不,來學。

一. 遊戲設定

  • 有個叫wp仔webpack 來的,下面也這樣叫了。)的員工,在名叫Web的公司上班,工作是處理一些檔案。
  • 我們玩家就要武裝 wp仔,讓他能夠處理 Boss 給各種各樣任務,不讓他被 Boss 在開會的時候點名批評。
  • 那我們來看看 wp仔 的基礎屬性吧。
module.exports = {
  entry: __dirname +`/src/main.js`,
  output: {
    path: __dirname + + `/build`,
    filename: `bundle.js`
  }
};

二. 遊戲開始

小試身手

  • 一天 Bosswp仔 說,你的打包檔案技能能不能加強點啊,小心我批評你呀。
  • 這時,我們玩家就要讓 wp仔 學習新的打包技術了。到哪裡找?不要慌,這遊戲有個官方資源庫,什麼技能書,飾品,配件,應有盡有,大家可以點資源商店,進去看看裡面的東西。
  • 好啦,我們找到了一款 eval-source-map 的技能書,點選學習。
module.exports = {
    .... // 其他的配置
    devtool: `eval-source-map`
};

Boss 的不滿,只好加強屬性。

  • Boss :雖然打包是快了,但有些檔案錯誤,你沒發現嗎,注意下。
  • wp仔 瑟瑟發抖,玩家們要幫他度過難關啊。快去資源商店看看,找找看什麼幫得上忙。
  • 找到了一個飾品 webpack.NoEmitOnErrorsPlugin 記錄錯誤,我們玩家就可知道哪裡出錯然後去改咯,趕快帶上。
modul.exports = {
    ... // 其他屬性
    pilugins: [
        new webpack.NoEmitOnErrorsPlugin()
    ]
}
  • Bosswp仔 啊,你就沒發現很多重複的檔案嗎?而且,剛修改過的檔案有沒有加進去啦,求求你別秀了。
  • 我去,連放在中間的相同檔案都發現,秦始皇的長生不老藥我都不服,就服你。
  • 還好,找到了 webpack.optimize.DedupePlugin 飾品可以去掉重複的,而 devServer 工具雖然不是在資源店,是在樓下小賣部的獲得的。聽說把 hot寶石放進這工具就能自動更新打包。裝上去試試。
  • webpack.optimize.DedupePlugin,已被移除了。感謝@LowryTang指出。
modul.exports = {
    ... // 其他屬性
    devServer: {
        host: `localhost`,
        port: 8080,
        hot: true
    },
    pilugins: [
        ...
        new webpack.optimize.DedupePlugin()
    ]
}

你還要我會文言文 ?

  • Boss:最近表現不錯。公司最近弄來了一些未來的文言文,你把它翻譯成現代文吧。
  • 什麼鬼,文言文?還是未來的?我的天。
  • 找遍資源店都沒有適合,還好樓下小賣部神通廣大,居然有這 babel 這逆天的裝備,不過聽說要自己配置這裝備的屬性。
// .babelrc
{
  "presets": [
    "env",
    "stage-2"
  ],
  "plugins": ["transform-runtime"] //可以理解為裝備的插槽。之前文章中有說過簡單用法。
}

// webpack.config.js
module.exports = {
    ... // 其他屬性
    module: {
        rules: [
            {
              test: /.js$/,
              loader: `babel-loader`
            }
        ]
    }
},

最後

文章寫成這樣不知效果怎樣,但主要想說明的是,webpack 真不難,面對不同的場景給 wp仔 搭配不同的屬性。儘管上面說的只是很簡單的配置,你們也可以弄個滿狀態的 wp仔 ,可我想讓大家換個角度學習,這樣學起來樂趣很多。

謝謝觀看。


總結

相關文章