成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

面對躺平同事,我開發了一個插件治好了我的精神內耗

開發 前端
我們開發的插件主要是在文件編譯時,將文件中的console智能的清除,對應的插件hook為transform。基本的結構如下。

插件已經開源了,可以看文章末尾

console狂魔能有多狂

事情是這樣的,前段時間我加入了公司某個小項目組

入組第一天,我要來了項目權限,下載完代碼和依賴

然后npm start,打開瀏覽器控制臺,

我尼瑪,一個登陸頁面就這么多log?

此刻我懷著忐忑的心情打開了自己的即將負責的模塊入口頁面:

這讓我怎么調試啊?

圖片圖片

上圖我已經把敏感信息屏蔽掉了(^/ω\^),每點擊下頁面就會蹦出好幾行console

全局一搜索,居然有近800多條console語句。

圖片圖片

起初,我為了方便我調試,我把影響我調試的console一一注釋了,真是個體力活。

就在我開心了幾天后,同事在開發群里發問了,“我調試打印的console怎么不見了?”,

我說我注釋了,那么多console我沒法調試啊,然后就被好幾個同事”圍攻“了,

后來想想沒經過人家的同意修改人家的代碼確實不對!

其實從他們的代碼來看,完全是躺平的狀態,完全放棄了公司的代碼規范,真的很讓人emo。

emo時間的思考

既然人家喜歡那樣做,我也沒辦法,emo了一會,我就尋找別的方法解決讓我強迫癥發作的方法。

第一種方法是如果有console就不讓提交代碼,顯然不現實,

第二種方法是使用去除conosle的插件,但是有個缺點,我的console也會被去掉,

焦慮了好久,我就想到,有沒有一種插件,在開發環境只展示開發者自己的console,但是不影響別人開發時調試。

找了好久都沒找到,那就自己動手開發一個吧。

我的思路是

  • 在每個文件中匹配console語句
  • 用匹配到的行,請求git,查看當前行的作者
  • 如果不是我就統統刪除console之后再build

這樣既不會干擾我開發,也不會影響別人開發調試了。

上次的文章已經介紹了vite的插件開發了,這里就不贅述了。

我們開發的插件主要是在文件編譯時,將文件中的console智能的清除,對應的插件hook為transform。基本的結構如下。

const RemoveConsole = (): {
  name: string;
  enforce: 'pre';
  transform: (code: string, id: string) => any;
} => {

  return {
    name: 'remove-console',
    enforce: "pre",
    transform: (code, id) => {
      // todo something
      return code
    }
  }
}

接下來一步步實現,

匹配console語句

如果文件中存在console則進行分析,否則返回原代碼。

分析過程:

  1. 按行劃分
  2. 分析出包含console的行

查詢git作者

主要使用child_process子進程運行git命令,根據命令的返回結果分別處理,

例如我們或者當前作者:

const userName = childProcess.execSync(
  `git config user.name`,
  { encoding: 'utf-8' }
)
console.log(userName)
// mmdctjj

分析每行作者,使用的git命令是

// 查看指定問價你的l1到l2行的作者詳細信息
git blame -L l1,l2 --porcelain filepath

圖片圖片

我們還需要在此基礎上改造下,完整的命令如下:(win不知grep命令,可以使用findstr代替)

git blame -L ${line+1},${line+1} --porcelain ${id} | grep "^author "

接著從字符串中截取出作者

const author = authorInfo.slice(authorInfo.indexOf(`author `) + 7)

根據當前作者和conosle的作者是否相等。我們得出需要刪除的行

// 需要刪除的行
 const removeLine = includesLines.filter(line => {
    const authorInfo = childProcess.execSync(
      `git blame -L ${line+1},${line+1} --porcelain ${id} | grep "^author "`,
      { encoding: 'utf-8' 
    )
    const author = authorInfo
      .slice(authorInfo.indexOf(`author `) + 7)
      .split('\n')[0]
      
    return author !== userName
})

刪除console

接著我們遍歷每一行,進行替換

const newRows = rows.map((row, idx) => {
  if (removeLine.includes(idx)) {
    // 正則表達式替換完整的console.log語句 
    return row.replace(/console\.log\((?:[^)(]|\((?:[^)(]+|\([^)(]*\))*\))*\)[;\n]?/g, '')
  }
  return row
})
const newContent = newRows.join(`\n`)

return newContent

測試

我們驗證下效果。這個文件中有多個console語句

圖片圖片

image.png

圖片圖片

十分完美!!!

今天的分享就到這了,感謝你的觀看,如有錯誤的地方,歡迎指正!

最后附上我的

?? vite插件: rollup-plugin-remove-others-console

插件地址:https://www.npmjs.com/package/rollup-plugin-remove-others-console

github地址:https://github.com/mmdctjj/rollup-plugin-remove-others-console

?? webpack loader: remove-others-console-loader

loader地址:https://www.npmjs.com/package/remove-others-console-loader

github地址:https://github.com/mmdctjj/remove-others-console-loader

責任編輯:武曉燕 來源: 萌萌噠草頭將軍
相關推薦

2022-09-17 08:10:20

HSV飽和度圖像

2025-04-17 04:22:00

Log插件日志管理

2023-02-13 00:18:22

前端庫框架集合

2022-11-10 09:28:40

框架開發

2022-08-31 15:57:11

程序員

2021-02-06 23:26:25

聊天室開發WebSocket

2022-01-06 14:05:07

Vue代碼前端

2023-06-14 09:41:32

2021-04-27 07:52:19

StarterSpring Boot配置

2025-03-11 01:28:16

2020-05-09 08:09:36

中臺阿里平臺

2013-05-13 10:24:44

谷歌開發團隊開發管理

2021-02-02 11:59:15

插件開發工具

2021-02-20 07:52:35

防猝死插件 IDEA

2013-05-21 09:32:11

ChromebookChrome OS

2021-03-02 07:33:10

VSCode插件代碼

2022-03-07 05:53:41

線程CPU代碼

2021-02-23 09:06:00

MVCC版本并發

2022-06-08 08:14:27

Dubbo數據包源代碼

2019-10-28 11:53:34

戴爾
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日韩有码一区 | 久久综合欧美 | 国产精品国产三级国产aⅴ无密码 | 国产欧美日韩精品一区二区三区 | 一区二区三区视频免费观看 | 天堂精品视频 | 孕妇一级毛片 | 伊人成人免费视频 | 91精品一区二区三区久久久久久 | 国产欧美一区二区三区在线播放 | 国产精品久久久久久久久久三级 | 91精品国产92 | 国产在线视频99 | 欧美一级黑人aaaaaaa做受 | 日韩色视频 | 国产精品欧美一区二区三区不卡 | 免费观看www | 久久免费高清视频 | 超碰激情 | 免费观看一级毛片 | 一区二区三区小视频 | 免费在线精品视频 | 欧美男人天堂 | 国产精品久久久久一区二区三区 | 视频1区 | 成人av一区 | chengrenzaixian | 午夜影院在线观看 | 日本三级电影免费 | 久久亚洲一区二区 | 亚洲精品久久久久中文字幕二区 | 亚洲精品无 | 日本一级淫片免费啪啪3 | 91xxx在线观看 | 久久美女网 | 欧美v日韩v | 伊人久久国产 | 久久在线免费 | 欧美日韩久久 | 国产1区在线 | 一区欧美 |