Skip to content

index

js
/// babel
const parser = require('@babel/parser')
const traverse = require('@babel/traverse').default
const generator = require('@babel/generator').default
const types = require('@babel/types')

const sourceCode = `
    console.log(1);

    function func() {
        console.info(2);
    }

    export default class Clazz {
        say() {
            console.debug(3);
        }
        render() {
            return <div>{console.error(4)}</div>
        }
    }
`

const ast = parser.parse(sourceCode, {
    sourceType: 'unambiguous',
    plugins: ['jsx']
})

traverse(ast, {
    CallExpression(path, state){
        if(types.isMemberExpression(path.node.callee) 
            && path.node.callee.object.name === 'console'
            && ['log', 'info', 'error', 'debug'].includes(path.node.callee.property.name)){
                const { line, column } = path.node.loc.start;
                path.node.arguments.push(types.stringLiteral(`filename: (${line}, ${column})`))
            }
    }
})

const { code, map } = generator(ast)

console.log(code)
/// babel
const parser = require('@babel/parser')
const traverse = require('@babel/traverse').default
const generator = require('@babel/generator').default
const types = require('@babel/types')

const sourceCode = `
    console.log(1);

    function func() {
        console.info(2);
    }

    export default class Clazz {
        say() {
            console.debug(3);
        }
        render() {
            return <div>{console.error(4)}</div>
        }
    }
`

const ast = parser.parse(sourceCode, {
    sourceType: 'unambiguous',
    plugins: ['jsx']
})

traverse(ast, {
    CallExpression(path, state){
        if(types.isMemberExpression(path.node.callee) 
            && path.node.callee.object.name === 'console'
            && ['log', 'info', 'error', 'debug'].includes(path.node.callee.property.name)){
                const { line, column } = path.node.loc.start;
                path.node.arguments.push(types.stringLiteral(`filename: (${line}, ${column})`))
            }
    }
})

const { code, map } = generator(ast)

console.log(code)