UNPKG

review-edit-auto

Version:

scan your project, only review edited code in given time-range automatic

41 lines (35 loc) 1.1 kB
import ignore from 'ignore'; const path = require('path'); const fs = require('fs'); /** * 加载ignore配置文件,并处理成数组 * @param {*} ignoreFileName */ async function loadIgnorePatterns(ignoreFileName): Promise<string[]> { const ignorePath = path.resolve(process.cwd(), ignoreFileName); try { const ignores = fs.readFileSync(ignorePath, 'utf8'); return ignores.split(/[\n\r]|\n\r/).filter((pattern) => Boolean(pattern)); } catch (e) { return []; } } /** * 根据ignore配置过滤文件列表 */ async function filterByIgnore( files: string[], ignoreFileName: string, ignoreRules, cwd = process.cwd(), ): Promise<string[]> { const ignorePatterns = await loadIgnorePatterns(ignoreFileName); const ig = ignore().add([...ignorePatterns, ...ignoreRules]); const filtered = files .map((raw) => (path.isAbsolute(raw) ? raw : path.resolve(cwd, raw))) .map((raw) => path.relative(cwd, raw)) .filter((filePath) => !ig.ignores(filePath)) .map((path) => path.replaceAll('\\', '/')); return filtered; } export default filterByIgnore;