123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- 'use strict';
- const micromatch = require('micromatch');
- const normalizePath = require('normalize-path');
- const path = require('path');
- const filterFilePaths = require('./utils/filterFilePaths');
- const getConfigForFile = require('./getConfigForFile');
- const getFileIgnorer = require('./utils/getFileIgnorer');
- /**
- * To find out if a path is ignored, we need to load the config,
- * which may have an ignoreFiles property. We then check the path
- * against these.
- * @param {import('stylelint').InternalApi} stylelint
- * @param {string} [filePath]
- * @return {Promise<boolean>}
- */
- module.exports = async function isPathIgnored(stylelint, filePath) {
- if (!filePath) {
- return false;
- }
- const cwd = stylelint._options.cwd;
- const ignorer = getFileIgnorer(stylelint._options);
- const result = await getConfigForFile(stylelint, filePath, filePath);
- if (!result) {
- return true;
- }
- // Glob patterns for micromatch should be in POSIX-style
- const ignoreFiles = [result.config.ignoreFiles || []].flat().map((s) => normalizePath(s));
- const absoluteFilePath = path.isAbsolute(filePath) ? filePath : path.resolve(cwd, filePath);
- if (micromatch([absoluteFilePath], ignoreFiles).length) {
- return true;
- }
- // Check filePath with .stylelintignore file
- if (filterFilePaths(ignorer, [path.relative(cwd, absoluteFilePath)]).length === 0) {
- return true;
- }
- return false;
- };
|