1.该需求常见于性能埋点,在函数里进行信息上报
2.实现在函数体开始插入 tracker 的代码
import _tracker2 from "tracker";
import aa from 'aa';
import * as bb from 'bb';
import {
cc } from 'cc';
import 'dd';
function a() {
_tracker2();
console.log('aaa');
}
class B {
bb() {
_tracker2();
return 'bbb';
}
}
const c = () => {
_tracker2();
return 'ccc';
};
const d = function () {
_tracker2();
console.log('ddd');
};
插件函数有 3 个参数,api、options、dirname
- api 里包含了各种 babel 的 api,比如 types、template 等,这些包就不用在插件里单独单独引入了,直接取来用就行。
- options 就是外面传入的参数
- dirname 是目录名(不常用)
返回对象里的visitor就是指定 traverse 时调用的函数
const {
declare } = require('@babel/helper-plugin-utils');
const importModule = require('@babel/helper-module-imports');
const autoTrackPlugin =