公司中代碼存在大量,因此產生
可以使用 @babel/parser 解析代碼生成 AST (抽象語法樹),然后使用 @babel/traverse 進行遍歷并刪除所有的 console.log 語句,最后使用 @babel/generator 生成修改后的代碼。
這里有一個網址,可以線上解析代碼轉換成AST語法樹:
https://astexplorer.net/
- 安裝必要的包:
// 引入
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;
- 創建一個腳本文件,例如 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