fix(prettier): Improve file selection in Prettier formatter, remove legacy package overrides, and update CI template indentation

This commit is contained in:
2025-08-08 05:34:54 +00:00
parent 39a31a4304
commit 9f5f568c3f
9 changed files with 67 additions and 51 deletions

View File

@@ -10,50 +10,62 @@ export class PrettierFormatter extends BaseFormatter {
async analyze(): Promise<IPlannedChange[]> {
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'
// Define directories to format (TypeScript directories by default)
const includeDirs = [
'ts',
'ts_*',
'test',
'tests'
];
// Get all files that match the pattern
const files = await plugins.smartfile.fs.listFileTree('.', globPattern);
// File extensions to format
const extensions = '{ts,tsx,js,jsx,json,md,css,scss,html,xml,yaml,yml}';
// Filter out excluded directories and ensure we only process files
// Also format root-level config files
const rootConfigFiles = [
'package.json',
'tsconfig.json',
'npmextra.json',
'.prettierrc',
'.prettierrc.json',
'.prettierrc.js',
'readme.md',
'README.md',
'changelog.md',
'CHANGELOG.md',
'license',
'LICENSE',
'*.md'
];
// Collect all files to format
const allFiles: string[] = [];
// Add files from TypeScript directories
for (const dir of includeDirs) {
const globPattern = `${dir}/**/*.${extensions}`;
const dirFiles = await plugins.smartfile.fs.listFileTree('.', globPattern);
allFiles.push(...dirFiles);
}
// Add root config files
for (const pattern of rootConfigFiles) {
const rootFiles = await plugins.smartfile.fs.listFileTree('.', pattern);
// Only include files at root level (no slashes in path)
const rootLevelFiles = rootFiles.filter(f => !f.includes('/'));
allFiles.push(...rootLevelFiles);
}
// Remove duplicates
const uniqueFiles = [...new Set(allFiles)];
// Get all files that match the pattern
const files = uniqueFiles;
// Ensure we only process actual files (not directories)
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()) {