fix(prettier): Improve file selection in Prettier formatter, remove legacy package overrides, and update CI template indentation
This commit is contained in:
@@ -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()) {
|
||||
|
Reference in New Issue
Block a user