Revert 09c36781 & tweak linting (#1501)

This diff reverts 09c36781 and tweaks how some of our linting was
working.

I'm not actually sure what caused the regression that 09c36781 was
fixing - it was something to do with typescript being used to transpile
eslintrc.js, but that being excluded from the tsconfig for those
projects. I fixed that by removing `rootDir` from those, but that
revealed some other issues with files not getting ignored correctly.

I fixed the ignoring issue with a change I've wanted to make to these
scripts for a while: only running them on files that are actually
tracked by git, instead of on everything with a relevant extension. A
side effect of that is that we have to re-implement .eslintignore
support ourselves, but that's very straight forward: the `ignore`
package that eslint uses is very easy to include.

### Change Type
- [x] `internal` — Any other changes that don't affect the published
package (will not publish a new version)

### Test Plan
-

### Release Notes
[internal-only]
pull/1502/head
alex 2023-06-02 11:45:51 +01:00 zatwierdzone przez GitHub
rodzic da35e0da27
commit 640bc9de24
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 4AEE18F83AFDEB23
9 zmienionych plików z 62 dodań i 35 usunięć

Wyświetl plik

@ -10,8 +10,6 @@
*.mdx *.mdx
**/_archive/* **/_archive/*
apps/docs/content.json apps/docs/content.json
apps/vscode/extension/editor/index.js
apps/vscode/extension/editor/tldraw-assets.json
apps/webdriver/www/index.js apps/webdriver/www/index.js
apps/vscode/extension/editor/* apps/vscode/extension/editor/*
apps/examples/www apps/examples/www

Wyświetl plik

@ -30,7 +30,7 @@
"build": "yarn run -T tsx scripts/build.ts", "build": "yarn run -T tsx scripts/build.ts",
"dev": "yarn run -T tsx scripts/dev.ts", "dev": "yarn run -T tsx scripts/dev.ts",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist",
"lint": "yarn run -T eslint --report-unused-disable-directives --ignore-path ../../../.eslintignore" "lint": "yarn run -T tsx ../../../scripts/lint.ts"
}, },
"devDependencies": { "devDependencies": {
"@tldraw/assets": "workspace:*", "@tldraw/assets": "workspace:*",

Wyświetl plik

@ -21,8 +21,7 @@
"composite": true, "composite": true,
"importHelpers": false, "importHelpers": false,
"skipDefaultLibCheck": true, "skipDefaultLibCheck": true,
"experimentalDecorators": true, "experimentalDecorators": true
"rootDir": ".."
}, },
"include": ["src", "../messages", "scripts", "../vscode-script-utils"], "include": ["src", "../messages", "scripts", "../vscode-script-utils"],
"references": [ "references": [

Wyświetl plik

@ -126,7 +126,7 @@
"build": "cd ../editor && yarn build && cd ../extension && tsx scripts/build.ts", "build": "cd ../editor && yarn build && cd ../extension && tsx scripts/build.ts",
"package": "yarn build && tsx scripts/package.ts", "package": "yarn build && tsx scripts/package.ts",
"publish": "vsce publish", "publish": "vsce publish",
"lint": "yarn run -T eslint --report-unused-disable-directives --ignore-path ../../../.eslintignore", "lint": "yarn run -T tsx ../../../scripts/lint.ts",
"clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf editor && rm -rf temp & yarn" "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf editor && rm -rf temp & yarn"
}, },
"devDependencies": { "devDependencies": {

Wyświetl plik

@ -21,8 +21,7 @@
"composite": true, "composite": true,
"importHelpers": false, "importHelpers": false,
"skipDefaultLibCheck": true, "skipDefaultLibCheck": true,
"experimentalDecorators": true, "experimentalDecorators": true
"rootDir": ".."
}, },
"include": ["src", "../messages", "scripts", "../vscode-script-utils"], "include": ["src", "../messages", "scripts", "../vscode-script-utils"],
"references": [{ "path": "../../../packages/file-format" }] "references": [{ "path": "../../../packages/file-format" }]

Wyświetl plik

@ -4457,6 +4457,7 @@ __metadata:
cross-fetch: ^3.1.5 cross-fetch: ^3.1.5
esbuild: ^0.16.7 esbuild: ^0.16.7
glob: ^8.0.3 glob: ^8.0.3
ignore: ^5.2.4
is-ci: ^3.0.1 is-ci: ^3.0.1
kleur: ^4.1.5 kleur: ^4.1.5
lazyrepo: 0.0.0-alpha.26 lazyrepo: 0.0.0-alpha.26
@ -10578,7 +10579,7 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"ignore@npm:^5.1.1, ignore@npm:^5.2.0": "ignore@npm:^5.1.1, ignore@npm:^5.2.0, ignore@npm:^5.2.4":
version: 5.2.4 version: 5.2.4
resolution: "ignore@npm:5.2.4" resolution: "ignore@npm:5.2.4"
checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef

Wyświetl plik

@ -63,14 +63,6 @@ const perPackageExceptions: Record<string, Record<string, () => string | undefin
prepack: () => undefined, prepack: () => undefined,
postpack: () => undefined, postpack: () => undefined,
}, },
'tldraw-vscode': {
lint: () =>
'yarn run -T eslint --report-unused-disable-directives --ignore-path ../../../.eslintignore',
},
'@tldraw/vscode-editor': {
lint: () =>
'yarn run -T eslint --report-unused-disable-directives --ignore-path ../../../.eslintignore',
},
} }
async function main({ fix }: { fix?: boolean }) { async function main({ fix }: { fix?: boolean }) {

Wyświetl plik

@ -1,33 +1,68 @@
import { join, relative } from 'path' import ignore from 'ignore'
import * as path from 'path'
import { exec } from './lib/exec' import { exec } from './lib/exec'
import { REPO_ROOT } from './lib/file' import { REPO_ROOT, readFileIfExists } from './lib/file'
const ESLINT_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx']
const PRETTIER_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx', 'json']
async function main() { async function main() {
const shouldFix = process.argv.includes('--fix') const shouldFix = process.argv.includes('--fix')
const lsFiles = await exec('git', ['ls-files', '.'], {
processStdoutLine: () => {
// don't print anything
},
})
const filesByExtension = new Map<string, string[]>()
for (const file of lsFiles.trim().split('\n')) {
const ext = file.split('.').pop()
if (!ext) continue
let files = filesByExtension.get(ext)
if (!files) {
files = []
filesByExtension.set(ext.toLowerCase(), files)
}
files.push(file)
}
let prettierFiles = PRETTIER_EXTENSIONS.flatMap((ext) => filesByExtension.get(ext) ?? [])
let eslintFiles = ESLINT_EXTENSIONS.flatMap((ext) => filesByExtension.get(ext) ?? [])
const relativeCwd = path.relative(REPO_ROOT, process.cwd())
const prettierIgnoreFile = await readFileIfExists(path.join(REPO_ROOT, '.prettierignore'))
if (prettierIgnoreFile) {
prettierFiles = prettierFiles
.map((f) => path.join(relativeCwd, f))
.filter(ignore().add(prettierIgnoreFile).createFilter())
.map((f) => path.relative(relativeCwd, f))
}
const eslintIgnoreFile = await readFileIfExists(path.join(REPO_ROOT, '.eslintignore'))
if (eslintIgnoreFile) {
eslintFiles = eslintFiles
.map((f) => path.join(relativeCwd, f))
.filter(ignore().add(eslintIgnoreFile).createFilter())
.map((f) => path.relative(relativeCwd, f))
}
try { try {
await exec( await exec('yarn', [
'yarn', 'run',
[ '-T',
'run', 'prettier',
'-T', shouldFix ? '--write' : '--check',
'prettier', ...prettierFiles,
shouldFix ? '--write' : '--check', ])
// we have to run prettier from root so it picks up the ignore file
join(relative(REPO_ROOT, process.cwd()), '**', '*.{ts,tsx,js,jsx,json}'),
],
{ pwd: REPO_ROOT }
)
await exec('yarn', [ await exec('yarn', [
'run', 'run',
'-T', '-T',
'eslint', 'eslint',
'--report-unused-disable-directives', '--report-unused-disable-directives',
'--ignore-path',
join(REPO_ROOT, '.eslintignore'),
shouldFix ? '--fix' : null, shouldFix ? '--fix' : null,
'.', ...eslintFiles,
]) ])
} catch (error) { } catch (error) {
process.exit(1) process.exit(1)

Wyświetl plik

@ -47,5 +47,8 @@
}, },
"scripts": { "scripts": {
"lint": "yarn run -T tsx lint.ts" "lint": "yarn run -T tsx lint.ts"
},
"dependencies": {
"ignore": "^5.2.4"
} }
} }