UNPKG

create-bfe-cttq

Version:

CTTQ大前端脚手架项目

48 lines (45 loc) 1.39 kB
const recast = require('recast'); const { importDeclaration, importSpecifier, importDefaultSpecifier, stringLiteral, identifier } = recast.types.builders; /** * 查找Import * @param { any } ast 抽象语法树 * @param {string} libName 库名 */ module.exports.FindImport = (ast, libName) => { let imports = []; recast.visit(ast, { visitImportDeclaration({ node }) { if (libName && node.source.value == libName) { imports.push(node); } else { imports.push(node); } return false; }, }) return imports; }; /** * 查找指定的节点 * @param { ASTNode } ast 抽象语法树 * @param { {exclude, include }} options 可选项 * @param { Array<string> } exclude 排除的类型名称 * @param { Array<string> } include 包含的类型名称 */ module.exports.FindNode = (ast, options) => { const nodes = ast.program.body.filter(node => { if (options) { if (options.exclude && options.exclude.includes(node.type)) { return false; } if (options.include && options.include.length > 0) { if (options.include.includes(node.type)) { return true; } return false; } } return true; }); return nodes; };