stylelint-config-prettier
Version:
Turns off all rules that are unnecessary or might conflict with Prettier.
58 lines (44 loc) • 1.39 kB
JavaScript
;
const { resolve } = require('path');
const stylelint = require('stylelint');
const stylelintConfigPrettier = require('./index');
function tryRequire(mod) {
try {
return require(mod);
} catch (error) {
return null;
}
}
const getConfigForFile = tryRequire('stylelint/lib/getConfigForFile');
const { hasOwnProperty } = Object.prototype;
async function getConfig(linter, resolvedPath) {
if (linter.getConfigForFile) {
return await linter.getConfigForFile(resolvedPath);
}
if (getConfigForFile) {
return await getConfigForFile(linter, resolvedPath);
}
throw new Error(`Could not get config for file: ${resolvedPath}`);
}
async function check(path) {
const resolvedPath = resolve(process.cwd(), path || '');
const linter = stylelint.createLinter();
const config = await getConfig(linter, resolvedPath);
const prettierRules = stylelintConfigPrettier.rules;
const configRules = config.config.rules;
const conflictingRules = [];
function isEmpty(value) {
return value === null || (Array.isArray(value) && value.length === 0);
}
Object.keys(prettierRules).forEach((rule) => {
if (
hasOwnProperty.call(configRules, rule) &&
!isEmpty(configRules[rule]) &&
configRules[rule][0] !== prettierRules[rule]
) {
conflictingRules.push(rule);
}
});
return conflictingRules.length ? conflictingRules : null;
}
exports.check = check;