| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- import { existsSync, readFileSync } from 'node:fs';
- import { isAbsolute, resolve } from 'node:path';
- import ignore from 'ignore';
- import { DEFAULT_IGNORE_FILENAME } from '../constants.mjs';
- /**
- * @typedef {import('stylelint').LinterOptions} LinterOptions
- *
- * @param {Pick<LinterOptions, 'ignorePath' | 'ignorePattern'> & { cwd: string }} options
- * @returns {import('ignore').Ignore}
- */
- export default function getFileIgnorer({ ignorePath, ignorePattern, cwd }) {
- const ignorer = ignore();
- const ignorePaths = [ignorePath || []].flat();
- if (ignorePaths.length === 0) {
- ignorePaths.push(DEFAULT_IGNORE_FILENAME);
- }
- for (const ignoreFilePath of ignorePaths) {
- const absoluteIgnoreFilePath = isAbsolute(ignoreFilePath)
- ? ignoreFilePath
- : resolve(cwd, ignoreFilePath);
- if (!existsSync(absoluteIgnoreFilePath)) continue;
- const ignoreText = readFileSync(absoluteIgnoreFilePath, {
- // utf must remain lowercased to hit the fast path
- // see nodejs/node#49888
- encoding: 'utf8',
- flag: 'r',
- });
- ignorer.add(ignoreText);
- }
- if (ignorePattern) ignorer.add(ignorePattern);
- return ignorer;
- }
|