UNPKG

@elsikora/setup-wizard

Version:

Setup Wizard - CLI scaffolding utility

64 lines (59 loc) 2.56 kB
#!/usr/bin/env node import { LINT_STAGED_FEATURE_CONFIG } from '../../domain/constant/lint-staged-feature-config.constant.js'; import { ELintStagedFeature } from '../../domain/enum/lint-staged-feature.enum.js'; /** * Configuration constant for lint-staged. * Provides a template function for generating lint-staged configuration files. */ const LINT_STAGED_CONFIG = { /** * Generates a lint-staged configuration file content. * Creates a JavaScript configuration file that dynamically applies linting tools * based on file extensions and enabled features. * @param features - Array of lint-staged features to enable * @returns String content for the lint-staged configuration file */ template: (features) => { const lintCommands = []; const fileFilters = []; if (features.includes(ELintStagedFeature.PRETTIER)) { lintCommands.push('commands.push("prettier --write --ignore-unknown");'); } if (features.includes(ELintStagedFeature.ESLINT)) { const extensions = LINT_STAGED_FEATURE_CONFIG[ELintStagedFeature.ESLINT].fileExtensions; fileFilters.push(` const eslintFiles = files.filter((fileName) => { const validExtensions = ${JSON.stringify(extensions)}; const fileExtension = fileName.split(".").pop(); const hasValidExtension = validExtensions.includes(fileExtension); const hasNoExtension = !fileName.includes("."); return hasValidExtension && !hasNoExtension; }); if (eslintFiles.length > 0) { commands.push(\`eslint --fix --max-warnings=0 --no-ignore \${eslintFiles.join(" ")}\`); }`); } if (features.includes(ELintStagedFeature.STYLELINT)) { const extensions = LINT_STAGED_FEATURE_CONFIG[ELintStagedFeature.STYLELINT].fileExtensions; fileFilters.push(` const styleFiles = files.filter((fileName) => { const validExtensions = ${JSON.stringify(extensions)}; const fileExtension = fileName.split(".").pop(); return validExtensions.includes(fileExtension); }); if (styleFiles.length > 0) { commands.push(\`stylelint --fix \${styleFiles.join(" ")}\`); }`); } return `export default { "*": (files) => { const commands = []; ${lintCommands.join("\n ")} ${fileFilters.join("\n")} return commands; }, };`; }, }; export { LINT_STAGED_CONFIG }; //# sourceMappingURL=lint-staged-config.constant.js.map