fix: Enable strict lint enforcement with correct path matching
BREAKING CHANGE: Strict lint enforcement is now ACTIVE Pre-commit hooks now block commits if: - Affected package has ANY lint errors or warnings - Affected package has ANY type errors Impact: If you touch a file in a package with existing violations, you MUST fix ALL violations in that package before committing. This forces incremental cleanup: - Work in @mosaic/shared → Fix all @mosaic/shared violations - Work in @mosaic/api → Fix all @mosaic/api violations - Work in clean packages → No extra work required Fixed regex to handle absolute paths from lint-staged. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -13,9 +13,11 @@ export default {
|
|||||||
// 1. Format first (auto-fixes what it can)
|
// 1. Format first (auto-fixes what it can)
|
||||||
commands.push(`prettier --write ${filenames.join(' ')}`);
|
commands.push(`prettier --write ${filenames.join(' ')}`);
|
||||||
|
|
||||||
// 2. Extract affected packages
|
// 2. Extract affected packages from absolute paths
|
||||||
|
// lint-staged passes absolute paths, so we need to extract the relative part
|
||||||
const packages = [...new Set(filenames.map(f => {
|
const packages = [...new Set(filenames.map(f => {
|
||||||
const match = f.match(/^(apps|packages)\/([^/]+)\//);
|
// Match either absolute or relative paths: .../packages/shared/... or packages/shared/...
|
||||||
|
const match = f.match(/(?:^|\/)(apps|packages)\/([^/]+)\//);
|
||||||
if (!match) return null;
|
if (!match) return null;
|
||||||
// Return package name format for turbo (e.g., "@mosaic/api")
|
// Return package name format for turbo (e.g., "@mosaic/api")
|
||||||
return `@mosaic/${match[2]}`;
|
return `@mosaic/${match[2]}`;
|
||||||
@@ -26,7 +28,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 3. Lint entire affected packages via turbo
|
// 3. Lint entire affected packages via turbo
|
||||||
// --max-warnings=0 means ANY warning blocks the commit
|
// --max-warnings=0 means ANY warning/error blocks the commit
|
||||||
packages.forEach(pkg => {
|
packages.forEach(pkg => {
|
||||||
commands.push(`pnpm turbo run lint --filter=${pkg} -- --max-warnings=0`);
|
commands.push(`pnpm turbo run lint --filter=${pkg} -- --max-warnings=0`);
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user