代碼轉換成AST語法樹移除無用代碼console.log、import

公司中代碼存在大量,因此產生

可以使用 @babel/parser 解析代碼生成 AST (抽象語法樹),然后使用 @babel/traverse 進行遍歷并刪除所有的 console.log 語句,最后使用 @babel/generator 生成修改后的代碼。

這里有一個網址,可以線上解析代碼轉換成AST語法樹:
https://astexplorer.net/
在這里插入圖片描述

  1. 安裝必要的包:
// 引入
const fs = require('fs');
const path = require('path');
const parser = require('@babel/parser');
const {exec} = require('child_process');
const traverse = require('@babel/traverse').default;
const generator = require('@babel/generator').default;
  1. 創建一個腳本文件,例如 removeConsoleLogs.js:

// AST語法樹去除console.log
const delLog = sourceCode => {// 解析源代碼生成 ASTconst ast = parser.parse(sourceCode, {sourceType: 'module',plugins: ['jsx'],});// 遍歷 AST,并移除所有的 console.logtraverse(ast, {CallExpression(path) {if (path.node.callee.type === 'MemberExpression' &&path.node.callee.object.name === 'console' &&path.node.callee.property.name === 'log') {path.remove(); // 移除 console.log 調用節點}},});// 使用 escodegen 重新生成優化后的代碼const optimizedCode = generator(ast);return optimizedCode.code;
};

說明:
解析代碼生成 AST:使用 @babel/parser 將 JavaScript 代碼解析成 AST。
遍歷 AST:使用 @babel/traverse 遍歷 AST,并找到所有的 console.log 調用表達式并刪除它們。
生成新的代碼:使用 @babel/generator 生成修改后的代碼。
示例:

let code = `
import React, {useState} from 'react';
const App = () => {const [counter, setCounter] = useState(0);const handlePress = () => {console.log('Button pressed'); // 這個 console.log 將會被移除setCounter(counter + 1);};return null;
};
`;console.lo

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/40108.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/40108.shtml
英文地址,請注明出處:http://en.pswp.cn/web/40108.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python爬蟲康復訓練——筆趣閣《神魂至尊》

還是話不多說,很久沒寫爬蟲了,來個bs4康復訓練爬蟲,正好我最近在看《神魂至尊》,爬個txt文件下來看看 直接上代碼 """ 神魂至尊網址-https://www.bqgui.cc/book/1519/ """ import requests from b…

【C++】 解決 C++ 語言報錯:未定義行為(Undefined Behavior)

文章目錄 引言 未定義行為(Undefined Behavior, UB)是 C 編程中非常危險且難以調試的錯誤之一。未定義行為發生時,程序可能表現出不可預測的行為,導致程序崩潰、安全漏洞甚至硬件損壞。本文將深入探討未定義行為的成因、檢測方法…

零基礎STM32單片機編程入門(七)定時器PWM波輸出實戰含源碼視頻

文章目錄 一.概要二.PWM產生框架圖三.CubeMX配置一個TIME輸出1KHZ,占空比50%PWM波例程1.硬件準備2.創建工程3.測量波形結果 四.CubeMX工程源代碼下載五.講解視頻鏈接地址六.小結 一.概要 脈沖寬度調制(PWM),是英文“Pulse Width Modulation”的縮寫&…

通過營銷本地化解鎖全球市場

在一個日益互聯的世界里,企業必須接觸到全球各地的不同受眾。營銷本地化是打開這些全球市場的關鍵。它包括調整營銷材料,使其與不同地區的文化和語言細微差別產生共鳴。以下是有效的營銷本地化如何推動您的全球擴張,并用實際例子來說明每一點…

UrbanGPT: Spatio-Temporal Large Language Models

1.文章信息 本次介紹的文章是2024年arxiv上一篇名為《UrbanGPT: Spatio-Temporal Large Language Models》的文章,UrbanGPT旨在解決城市環境中的時空預測問題,通過大語言模型(LLM)的強大泛化能力來應對數據稀缺的挑戰。 2.摘要 Ur…

SQLAlchemy批量操作數據

批量插入 session.bulk_insert_mappings(ModelClass, list(dict()))批量更新 session.bulk_update_mappings(ModelClass, list(dict())

Flutter的生命周期方法

Flutter的生命周期執行時機可以分為兩個主要部分:Flutter本身的組件生命周期(widget生命周期)和平臺相關的應用程序生命周期(APP生命周期)。 Widget生命周期 Widget生命周期可以細分為三個階段: 初始化階…

centos ssh一鍵升級到9.8版本腳本

背景 前端時間暴露出ssh漏洞,需要將服務器ssh版本,目前ssh版本最新版為9.8,故在服務器測試,準備將所有服務器ssh版本升級。腳本在centos7.6上親測可用。#!/bin/bash #Author Mr zhangECHO_GREEN() {echo -e "\033[32m $1...…

昇思MindSpore學習總結九——FCN語義分割

1、語義分割 圖像語義分割(semantic segmentation)是圖像處理和機器視覺技術中關于圖像理解的重要一環,AI領域中一個重要分支,常被應用于人臉識別、物體檢測、醫學影像、衛星圖像分析、自動駕駛感知等領域。 語義分割的目的是對圖…

【楚怡杯】職業院校技能大賽 “Python程序開發”賽項樣題三

Python程序開發實訓 (時量:240分鐘) 中國XX 實訓說明 注意事項 1. 請根據提供的實訓環境,檢查所列的硬件設備、軟件清單、材料清單是否齊全,計算機設備是否能正常使用。 2. 實訓結束前,在實訓平臺提供的…

從數據到智能,英智私有大模型助力企業實現數智化發展

在數字化時代,數據已經成為企業最重要的資源。如何將這些數據轉化為實際的業務價值,是每個企業面臨的重要課題。英智利用業界領先的清洗、訓練和微調技術,對企業數據進行深度挖掘和分析,定制符合企業業務場景的私有大模型&#xf…

篩選有合并單元格的數據

我們經常會使用合并單元格,比如下面表格,因為一個部門中會有不同的員工,就會出現如下表格: 但是當按部門去篩選的時候,會發現并不是我們預期的結果,部門列有空值,每個部門只有第一行數據可以被…

虛幻引擎 快速的色度摳圖 Chroma Key 算法

快就完了 ColorTolerance_PxRange為容差,這里是0-255的輸入,也就是px單位,直接用0-1可以更快 Key為目標顏色

PySide6 實現資源的加載:深入解析與實戰案例

目錄 1. 引言 2. 加載內置資源 3. 使用自定義資源文件(.qrc) 創建.qrc文件 編譯.qrc文件 加載資源 4. 動態加載UI文件 使用Qt Designer設計UI 加載UI文件 5. 注意事項與最佳實踐 6. 結論 在開發基于PySide6的桌面應用程序時&…

什么是 DDoS 攻擊及如何防護DDOS攻擊

自進入互聯網時代,網絡安全問題就一直困擾著用戶,尤其是DDOS攻擊,一直威脅著用戶的業務安全。而高防IP被廣泛用于增強網絡防護能力。今天我們就來了解下關于DDOS攻擊,以及可以防護DDOS攻擊的高防IP該如何正確選擇使用。 一、什么是…

個人引導頁+音樂炫酷播放器(附加源碼)

個人引導頁音樂炫酷播放器 效果圖部分源碼完整源碼領取下期更新內容 效果圖 部分源碼 //網站動態標題開始 var OriginTitile document.title, titleTime; document.addEventListener("visibilitychange", function() {if (document.hidden) {document.title "…

極客時間 - 《Linux 性能優化實戰》

極客時間 - 《Linux 性能優化實戰》原文鏈接:https://time.geekbang.org/column/intro/100020901 02 | 基礎篇:到底應該怎么理解“平均負載”?在Linux系統中,當一個進程啟動時,操作系統會為該進程申請哪些資源&#x…

Python學習從0開始——Kaggle實踐可視化001

Python學習從0開始——Kaggle實踐可視化001 一、創建和加載數據集二、數據預處理1.按name檢查,處理重復值(查重)2.查看存在缺失值的列并處理(缺失值處理)2.1按行或列查看2.2無法推測的數據2.3可由其它列推測的數據 3.拆…

QT實現GIF動圖顯示(小白版,可直接copy使用)

需要你自己提前設置好動圖的位置&#xff0c;本例中存放于"/Users/PLA/PLA/PLA.gif widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QMovie> #include <QLabel>class Widget : public QWidget {Q_OBJECTpublic:explicit Wid…

mysql數據表時間字段自動存時間

時間字段自動存時間&#xff0c;不用通過插入語句存當前操作時間&#xff1a; created_at timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 創建時間,