需要解決的問題 扣取下來的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處理