正则表达式匹配:优化VSCode脚本查找代码,实现全场景匹配
VSCode脚本全场景匹配优化方案
核心优化方向
- 通配符+正则复合匹配:放弃单一通配符规则,结合正则表达式覆盖更多边缘场景,比如带特殊字符的文件名、多扩展名脚本、嵌套层级不固定的目录
- 精准排除无关项:过滤node_modules、.git、dist这类无需扫描的目录/文件,既提升效率又避免误匹配
- 可扩展规则集:支持自定义脚本类型列表,适配不同技术栈的脚本文件(如.js/.ts/.py/sh/bat等)
优化后的扫描代码示例
const vscode = require('vscode'); const glob = require('glob'); function scanAllScripts() { const workspaceRoots = vscode.workspace.workspaceFolders; if (!workspaceRoots) return []; // 匹配多类型脚本文件,支持带特殊字符的文件名 const scriptPattern = '**/*.{js,ts,py,sh,bat,cmd,mjs,cjs}'; // 通用排除规则,可根据需求增减 const ignoreRules = [ '**/node_modules/**', '**/.git/**', '**/dist/**', '**/build/**', '**/coverage/**' ]; const scanOptions = { cwd: workspaceRoots[0].uri.fsPath, ignore: ignoreRules, nodir: true, // 仅匹配文件,跳过目录 dot: true, // 包含隐藏目录中的脚本 strict: false // 兼容部分带特殊字符的路径 }; // 执行全量扫描并返回结果 return glob.sync(scriptPattern, scanOptions); }
进阶场景适配技巧
- 版本号命名脚本匹配:用正则规则
**/[a-z-]+-v\d+\.\d+\.\d+\.js匹配类似app-v2.3.1.js的版本化脚本 - 内容导向匹配:扫描文件后追加内容校验,通过
vscode.workspace.openTextDocument读取文件内容,匹配是否包含特定函数、注释或关键字 - 多工作区扫描:遍历
workspaceRoots数组,实现跨多个工作区的脚本全量匹配
内容的提问来源于stack exchange,提问作者user16491190
相关产品推荐
相关产品推荐

