mirror of
https://github.com/wavetermdev/xterm.js.git
synced 2026-08-05 13:43:48 -07:00
Merge pull request #5596 from Tyriar/lint_changes
New npm script to lint only changes
This commit is contained in:
@@ -26,6 +26,7 @@ npm run build && npm run esbuild # Build all TypeScript and bundle
|
||||
- Integration tests: `npm run test-integration` (Playwright across Chrome/Firefox/WebKit)
|
||||
- Integration tests by file: `npm run test-integration -- test/playwright/InputHandler.test.ts`. Never use grep to filter tests, it doesn't work
|
||||
- Integration tests by addon: `npm run test-integration --suite=addon-search`. Suites always follow the format `addon-<something>`
|
||||
- Lint changes: `npm run lint-changes` to lint only changed files, `npm run lint-changes-fix` to fix them
|
||||
|
||||
## Addon Development Pattern
|
||||
|
||||
|
||||
@@ -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));
|
||||
@@ -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",
|
||||
|
||||
Reference in New Issue
Block a user