<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          前端:一鍵清除項(xiàng)目中無(wú)用的console.log代碼

          共 7694字,需瀏覽 16分鐘

           ·

          2021-08-13 09:27

          關(guān)注并將「趣談前端」設(shè)為星標(biāo)

          每天定時(shí)分享技術(shù)干貨/優(yōu)秀開(kāi)源/技術(shù)思維

          前言

          說(shuō)起console.log調(diào)試,不用多說(shuō),那是非常的好用,開(kāi)發(fā)中幫助我們解決了不少Bug。我們經(jīng)常能在開(kāi)發(fā)環(huán)境中看見(jiàn)這一坨一坨的console調(diào)試。但是生產(chǎn)環(huán)境是絕不對(duì)不允許出現(xiàn)console信息代碼的。你還在手動(dòng)一個(gè)一個(gè)刪除嗎,那得多累?。?/p>

          下面我們來(lái)看一下這幾種方式清除生產(chǎn)環(huán)境console無(wú)用代碼。

          基本操作

          Webpack配置

          uglifyjs-webpack-plugin

          uglifyjs-webpack-plugin

          我們可以看一下該插件介紹,該插件是用于減少我們代碼js代碼體積。并且如果安裝運(yùn)行該插件的話(huà),node版本是在v6.9.0+Webpack版本v4.0.0+。

          官網(wǎng)地址看這里:uglifyjs-webpack-plugin

          安裝

          npm i uglifyjs-webpack-plugin

          使用

          webpack.config.js文件下進(jìn)行如下配置。

          const UglifyJsPlugin = require('uglifyjs-webpack-plugin')
          module.exports = {
           // 省略...
              mode"production",
              optimization: {
                  minimizer: [
                    new UglifyJsPlugin({
                      uglifyOptions: {
                        // 刪除注釋
                        output:{
                          commentsfalse
                        },
                        compress: {
                          drop_consoletrue// 刪除所有調(diào)式帶有console的
                          drop_debuggertrue,
                          pure_funcs: ['console.log'// 刪除console.log
                        }
                      }
                    })
                  ]
                } 
          }

          配置完上面代碼,重啟即可看到效果。注意:代碼只會(huì)在production(生產(chǎn)環(huán)境)環(huán)境下有效,看上面我們的配置mode: production,就是生產(chǎn)環(huán)境。來(lái)講解一下上面這倆個(gè)屬性drop_consolepure_funcs的區(qū)別,前者則是刪除所有帶console的前綴的調(diào)試方法,如:console.log、console.table、console.dir只要帶有console前綴則全部刪除。而后者則是配置,就是數(shù)組的值是什么它才會(huì)刪除什么,比如pure_funcs:[console.log, console.dir]那么只會(huì)刪除這兩項(xiàng),則不會(huì)刪除代碼中的console.table代碼。

          以上代碼放到生產(chǎn)環(huán)境下,console調(diào)試代碼即可清除,但是還有一個(gè)問(wèn)題需要注意,就是該插件只支持ES5語(yǔ)法,如果你的代碼中涉及到ES6語(yǔ)法則會(huì)報(bào)錯(cuò)。

          terser-webpack-plugin

          terser-webpack-plugin

          該插件跟上面uglifyjs-webpack-plugin一樣,都是用于減少我們代碼js代碼體積。

          看上面描述:如果你的Webpack版本大于5+,則不需要安裝此terser-webpack-plugin插件,會(huì)自帶terser-webpack-plugin。但你的Webpack版本還是4,則你需要安裝terser-webpack-plugin4的版本

          安裝

          npm i terser-webpack-plugin@4

          使用

          const TerserWebpackPlugin = require("terser-webpack-plugin");

          module.exports = {
              // 省略...
              mode"production",
              optimization: {
               minimizer: [
                     new TerserWebpackPlugin({
                          terserOptions: {
                            compress: {
                              warningstrue,
                              drop_consoletrue,
                              drop_debuggertrue,
                              pure_funcs: ['console.log'"console.table"// 刪除console
                            }
                          }
                      });
                  ]
              }
          }

          該插件功能與上面一樣,屬性用法也一樣,唯一該插件可支持ES6語(yǔ)法。都是在生產(chǎn)環(huán)境代碼生效。

          Vue-cli配置

          這是在Vue-cli項(xiàng)目中推薦使用的清除console插件。更多介紹看這里 babel-plugin-transform-remove-console

          安裝

          npm i babel-plugin-transform-remove-console --save-dev

          使用

          在項(xiàng)目根目錄babel.config.js文件下配置。該插件不區(qū)分生產(chǎn)環(huán)境或者開(kāi)發(fā)環(huán)境,只要你配置都能生效。

          module.exports = {
           plugins: [
            "transform-remove-console"
           ]
          }

          // 生產(chǎn)環(huán)境如下配置

          const prodPlugins = []
          if (process.env.NODE_ENV === 'production') {
           prodPlugins.push('transform-remove-console')
          }
          module.exports = {
           plugins: [
            ...prodPlugins
           ]
          }

          簡(jiǎn)單粗暴刪除

          接下來(lái)這個(gè)可是一個(gè)騷操作,瞪大眼睛看好了,哈哈哈。直接重寫(xiě)console.log的方法。

          console.log = function ({};

          靈活運(yùn)用VScode編輯器

          微信截圖_20210805001715.png

          使用

          直接全局搜索本項(xiàng)目里console.log正則匹配,然后全部替換為空即可。

          console\.log\(.*?\)

          手寫(xiě)Loader刪除console

          我們來(lái)寫(xiě)一個(gè)簡(jiǎn)易版的清除console插件。

          新建一個(gè)js文件,我這里名為clearConsole.js,其實(shí)這里也是用正則去匹配然后替換為空。如果不懂loader則可看我這篇文章手寫(xiě)一個(gè)Sass-loader。

          clearConsole.js

          const reg = /(console.log\()(.*)(\))/g;
          module.exports = function(source{
              source = source.replace(reg, "")
              return source;
          }

          Vue.config.js配置

          module.exports = {
              // 省略...
              configureWebpack: {
                  module: {
                      rules: [
                          {
                              test/\.vue$/,
                              exclude/node_modules/,
                              loader: path.resolve(__dirname, "./clearConsole.js")
                          },
                          {
                              test/\.js$/,
                              exclude/node_modules/,
                              loader: path.resolve(__dirname, "./clearConsole.js")
                          }
                      ],
                  }
              },
          }

          配置如上代碼就可以啦~,清除js文件和vue文件里的console.log。exclude代表不去node_module目錄下查找。

          ?? 看完三件事

          如果你覺(jué)得這篇內(nèi)容對(duì)你挺有啟發(fā),我想邀請(qǐng)你幫我三個(gè)小忙:

          • 點(diǎn)個(gè)【在看】,或者分享轉(zhuǎn)發(fā),讓更多的人也能看到這篇內(nèi)容
          • 關(guān)注公眾號(hào)【趣談前端】,定期分享 工程化 可視化 / 低代碼 / 優(yōu)秀開(kāi)源。




          從零搭建全??梢暬笃林谱髌脚_(tái)V6.Dooring

          從零設(shè)計(jì)可視化大屏搭建引擎

          Dooring可視化搭建平臺(tái)數(shù)據(jù)源設(shè)計(jì)剖析

          可視化搭建的一些思考和實(shí)踐

          基于Koa + React + TS從零開(kāi)發(fā)全棧文檔編輯器(進(jìn)階實(shí)戰(zhàn)



          點(diǎn)個(gè)在看你最好看

          瀏覽 63
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美成人性爱可下载视频 | 国产 在线观看免费视频 | 国语自产偷拍精品视频偷少妇 | 日韩无码成人AV | 日屄福利 |