3.3.0 • Published 1 year ago
search-keywords v3.3.0
search-keywords
文档锚链接
1. 该库用来干什么?
2. 输出内容简单介绍
3. 配置描述
4. Installation安装
5. Usage使用案例
1. 该库用来干什么?
1.作用:极速查找目标关键字存在于哪些文件中,类似于vscode侧边栏的搜索
2.适合文件:文本文件,如.txt , .c , .js , .html等等...,不适合二进制文件如.excel, .exe, .jpg等等...
2. 输出内容简单介绍
{
关键字1:{
文件路径1:[
该文件路径的第1行,
该文件路径的第7行
...
],
文件路径2:[
该文件路径的第5行,
该文件路径的第34行
...
],
},
关键字2:{
...
}
}
例子↓↓↓
{
console: {
'F:\\abc\\npm\\temp\\src\\scriptSearch.js': [
17,//第17行
2,//第2行
3//第3行
],
'F:\\zyx\\npm\\temp\\src\\searchKeywords.js': [ 42 ]
},
search: {...}
}
3. 配置描述
主配置
参数名 | 数据类型 | 必填 | 默认值 | 简单描述 | 举例 |
---|---|---|---|---|---|
rootDirPath | String | 是🐢 | 查询的根目录(绝对路径) | path.resolve(__dirname) | |
keywords | Array | 是🐢 | 查询的关键字数组 | "console","function" | |
validExts | Array | 否⭕ | ".js",".jsx",".vue" | 允许的文件后缀,若设置了inValidExts则validExts无效 | |
inValidExts | Array | 否⭕ | false | 查询所有文件,除了设置的不允许的文件后缀,若设置了inValidExts则validExts无效 | |
excludeKeywords | Array | 否⭕ | "(.*)/node_modules", "(.*)/LICENSE", "(.*)/dist" | 排除的目标文件或目录,根据path-to-regexp库规则进行配置,也可直接传绝对路径 | path.resolve(__dirname,"./node_modules") |
4. Installation安装
npm install search-keywords
或者
yarn add search-keywords
5. Usage使用案例
场景一:查找关键字const和require
const scriptSearch = require("search-keywords");
const path = require("path");
const config = {//配置
rootDirPath: path.resolve(__dirname),
keywords: ["const","require"]
}
//不传配置则使用默认配置
scriptSearch(config).then(res=>{
console.log(res)
});
场景二:修改所有一样的目录名,如所有.git包括嵌套的,改为.mygit
const scriptSearch = require('search-keywords');
const path = require('path');
const fs = require("fs/promises")
const originGit = ".git";
const rename = ".mygit"
const config = {//配置
rootDirPath: path.resolve(__dirname,"__ttt"),
//.git/config里的关键字repositoryformatversion
keywords: ['repositoryformatversion'],
validExts: ['\\' + `${originGit}\\config`],
excludeKeywords: ["(.*)/node_modules","(.*)/.nuxt","(.*)/.umi", "(.*)/LICENSE", "(.*)/dist"]
}
main({originGit, rename})
async function main({originGit , rename }){
//不传配置则使用默认配置
const {repositoryformatversion:result} = await scriptSearch(config);
const gitPaths = []
const keys = Object.keys(result)
for(let keyItem of keys){
const index = keyItem.indexOf('\\' + originGit)
if(index !== -1){
const dir = keyItem.slice(0,index);
gitPaths.push({
origin: path.resolve(dir,originGit),
rename: path.resolve(dir,rename)
})
}
}
console.log(gitPaths)
console.time("修改时间")
await Promise.allSettled(gitPaths.map(it=>{
return fs.rename(it.origin,it.rename)
}))
const {repositoryformatversion:failResult} = await scriptSearch(config);
let failLen = Object.keys(failResult).length
console.log(`修改成功数量: ${gitPaths.length - failLen}/${gitPaths.length}`)
console.timeEnd("修改时间")
}