需要解决的问题 扣取下来的webpack文件过大
解决思路 用ast将需要的代码扣下来 结果展示
实现步骤
-
第一步:我们得知道需要哪些模块
在入口处,增加模块记录
-
第二步,分析ast代码
通过分析发现,key 有三种值 分别为NumbericLiteral、StringLiteral、Identifier
name可以编写如下代码
let find_function = {ObjectProperty(path) {let node = path.node;if (t.isFunctionExpression(node.value)) {if (t.isStringLiteral(node.key) && decode_function.includes(node.key.value)){let function_name = node.key.value;// console.log("function_name:" + function_name, number += 1)function_final_list.push(generator(node).code)}else if(t.isIdentifier(node.key)&& decode_function.includes(node.key.name)){let function_name = node.key.name;// console.log("function_name:" + function_name, number += 1)function_final_list.push(generator(node).code)}else if(t.isNumericLiteral(node.key)&& decode_function.includes(String(node.key.value))){let function_name = node.key.value;// console.log("function_name:" + function_name, number += 1)function_final_list.push(generator(node).code)}}}
}
- 注意
在isNumbericLiteral的方法,由于我在提取时做了String处理,所有后续的node.key.value 也需要做String处理