Add lint-changes npm scripts

This commit is contained in:
Daniel Imms 2026-01-08 17:32:15 -08:00
parent 94a264679e
commit d65f9312ea
No known key found for this signature in database
GPG Key ID: 5F0FF45B19E3A5D2
2 changed files with 51 additions and 0 deletions

49
bin/lint_changes.js Normal file
View File

@ -0,0 +1,49 @@
/**
* Copyright (c) 2026 The xterm.js authors. All rights reserved.
* @license MIT
*/
// @ts-check
const { execSync, spawn } = require('child_process');
const path = require('path');
const extensions = ['.ts', '.mts'];
const fix = process.argv.includes('--fix');
// Get uncommitted changed files (staged + unstaged)
function getChangedFiles() {
try {
const output = execSync('git diff --name-only --diff-filter=ACMR HEAD', {
encoding: 'utf-8',
cwd: path.join(__dirname, '..')
});
return output.split('\n').filter(f => f && extensions.some(ext => f.endsWith(ext)));
} catch {
return [];
}
}
const files = getChangedFiles();
if (files.length === 0) {
console.log('No changed TypeScript files to lint.');
process.exit(0);
}
console.log(`Linting ${files.length} changed file(s)...`);
const eslintArgs = ['--max-warnings', '0'];
if (fix) {
eslintArgs.push('--fix');
}
eslintArgs.push(...files);
const eslint = process.platform === 'win32' ? 'eslint.cmd' : 'eslint';
const child = spawn(eslint, eslintArgs, {
stdio: 'inherit',
cwd: path.join(__dirname, '..'),
shell: process.platform === 'win32'
});
child.on('close', code => process.exit(code ?? 0));

View File

@ -48,6 +48,8 @@
"test": "npm run test-unit",
"posttest": "npm run lint",
"lint": "eslint --max-warnings 0 src/ addons/ demo/",
"lint-changes": "node ./bin/lint_changes.js",
"lint-changes-fix": "node ./bin/lint_changes.js --fix",
"lint-fix": "eslint --fix src/ addons/ demo/",
"lint-api": "eslint --config eslint.config.typings.mjs --max-warnings 0 typings/",
"test-unit": "node ./bin/test_unit.js",