This diff reverts09c36781
and tweaks how some of our linting was working. I'm not actually sure what caused the regression that09c36781
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]
This commit is contained in:
parent
da35e0da27
commit
640bc9de24
9 changed files with 62 additions and 35 deletions
|
@ -10,8 +10,6 @@
|
|||
*.mdx
|
||||
**/_archive/*
|
||||
apps/docs/content.json
|
||||
apps/vscode/extension/editor/index.js
|
||||
apps/vscode/extension/editor/tldraw-assets.json
|
||||
apps/webdriver/www/index.js
|
||||
apps/vscode/extension/editor/*
|
||||
apps/examples/www
|
|
@ -30,7 +30,7 @@
|
|||
"build": "yarn run -T tsx scripts/build.ts",
|
||||
"dev": "yarn run -T tsx scripts/dev.ts",
|
||||
"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": {
|
||||
"@tldraw/assets": "workspace:*",
|
||||
|
|
|
@ -21,8 +21,7 @@
|
|||
"composite": true,
|
||||
"importHelpers": false,
|
||||
"skipDefaultLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"rootDir": ".."
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"include": ["src", "../messages", "scripts", "../vscode-script-utils"],
|
||||
"references": [
|
||||
|
|
|
@ -126,7 +126,7 @@
|
|||
"build": "cd ../editor && yarn build && cd ../extension && tsx scripts/build.ts",
|
||||
"package": "yarn build && tsx scripts/package.ts",
|
||||
"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"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -21,8 +21,7 @@
|
|||
"composite": true,
|
||||
"importHelpers": false,
|
||||
"skipDefaultLibCheck": true,
|
||||
"experimentalDecorators": true,
|
||||
"rootDir": ".."
|
||||
"experimentalDecorators": true
|
||||
},
|
||||
"include": ["src", "../messages", "scripts", "../vscode-script-utils"],
|
||||
"references": [{ "path": "../../../packages/file-format" }]
|
||||
|
|
|
@ -4457,6 +4457,7 @@ __metadata:
|
|||
cross-fetch: ^3.1.5
|
||||
esbuild: ^0.16.7
|
||||
glob: ^8.0.3
|
||||
ignore: ^5.2.4
|
||||
is-ci: ^3.0.1
|
||||
kleur: ^4.1.5
|
||||
lazyrepo: 0.0.0-alpha.26
|
||||
|
@ -10578,7 +10579,7 @@ __metadata:
|
|||
languageName: node
|
||||
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
|
||||
resolution: "ignore@npm:5.2.4"
|
||||
checksum: 3d4c309c6006e2621659311783eaea7ebcd41fe4ca1d78c91c473157ad6666a57a2df790fe0d07a12300d9aac2888204d7be8d59f9aaf665b1c7fcdb432517ef
|
||||
|
|
|
@ -63,14 +63,6 @@ const perPackageExceptions: Record<string, Record<string, () => string | undefin
|
|||
prepack: () => 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 }) {
|
||||
|
|
|
@ -1,33 +1,68 @@
|
|||
import { join, relative } from 'path'
|
||||
|
||||
import ignore from 'ignore'
|
||||
import * as path from 'path'
|
||||
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() {
|
||||
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 {
|
||||
await exec(
|
||||
'yarn',
|
||||
[
|
||||
'run',
|
||||
'-T',
|
||||
'prettier',
|
||||
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', [
|
||||
'run',
|
||||
'-T',
|
||||
'prettier',
|
||||
shouldFix ? '--write' : '--check',
|
||||
...prettierFiles,
|
||||
])
|
||||
await exec('yarn', [
|
||||
'run',
|
||||
'-T',
|
||||
'eslint',
|
||||
'--report-unused-disable-directives',
|
||||
'--ignore-path',
|
||||
join(REPO_ROOT, '.eslintignore'),
|
||||
shouldFix ? '--fix' : null,
|
||||
'.',
|
||||
...eslintFiles,
|
||||
])
|
||||
} catch (error) {
|
||||
process.exit(1)
|
||||
|
|
|
@ -47,5 +47,8 @@
|
|||
},
|
||||
"scripts": {
|
||||
"lint": "yarn run -T tsx lint.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"ignore": "^5.2.4"
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue