From b629a7d70b118fe8b493602e71fb9ef40aa4d4f6 Mon Sep 17 00:00:00 2001 From: Juergen Kunz Date: Fri, 8 Aug 2025 05:28:01 +0000 Subject: [PATCH] fix(prettier): Improve file exclusion in the Prettier formatter to skip unnecessary files and directories. --- changelog.md | 6 +++ ts/00_commitinfo_data.ts | 2 +- .../formatters/prettier.formatter.ts | 38 ++++++++++++++++++- 3 files changed, 44 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index f23688a..4cdd4a2 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # Changelog +## 2025-08-08 - 1.16.4 - fix(prettier) +Improve file exclusion in the Prettier formatter to skip unnecessary files and directories. + +- Added exclusion patterns for node_modules, .git, dist, .nogit, coverage, .nyc_output, vendor, bower_components, jspm_packages, and minified files. +- Optimized filtering logic to ensure only valid files are processed. + ## 2025-08-08 - 1.16.3 - fix(changecache/prettier) Skip directories during file processing to prevent errors in changecache and prettier formatting diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 0926f4d..34224f8 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@git.zone/cli', - version: '1.16.3', + version: '1.16.4', description: 'A comprehensive CLI tool for enhancing and managing local development workflows with gitzone utilities, focusing on project setup, version control, code formatting, and template management.' } diff --git a/ts/mod_format/formatters/prettier.formatter.ts b/ts/mod_format/formatters/prettier.formatter.ts index d725702..995d65e 100644 --- a/ts/mod_format/formatters/prettier.formatter.ts +++ b/ts/mod_format/formatters/prettier.formatter.ts @@ -12,12 +12,48 @@ export class PrettierFormatter extends BaseFormatter { const changes: IPlannedChange[] = []; const globPattern = '**/*.{ts,tsx,js,jsx,json,md,css,scss,html,xml,yaml,yml}'; + // Directories to exclude from formatting + const excludePatterns = [ + 'node_modules/**', + '.git/**', + 'dist/**', + 'dist_*/**', + '.nogit/**', + 'coverage/**', + '.nyc_output/**', + 'vendor/**', + 'bower_components/**', + 'jspm_packages/**', + '*.min.js', + '*.min.css' + ]; + // Get all files that match the pattern const files = await plugins.smartfile.fs.listFileTree('.', globPattern); - // Filter out any potential directories and ensure we only process files + // Filter out excluded directories and ensure we only process files const validFiles: string[] = []; for (const file of files) { + // Check if file matches any exclude pattern + let shouldExclude = false; + for (const pattern of excludePatterns) { + // Simple pattern matching for common cases + const patternBase = pattern.replace('/**', '').replace('**/', '').replace('*', ''); + if (pattern.endsWith('/**') && file.startsWith(patternBase + '/')) { + shouldExclude = true; + logVerbose(`Excluding ${file} - matches exclude pattern ${pattern}`); + break; + } else if (pattern.startsWith('*.') && file.endsWith(patternBase)) { + shouldExclude = true; + logVerbose(`Excluding ${file} - matches exclude pattern ${pattern}`); + break; + } + } + + if (shouldExclude) { + continue; + } + try { const stats = await plugins.smartfile.fs.stat(file); if (!stats.isDirectory()) {