[dx] Allow vscode to search inside md files by default (#3105)
Before this PR all .md files were targeted by the `.ignore` file, which has bitten me on a number of occasions since .md files often contain valuable information (e.g. the vscode extensions docs). This PR unignores .md files while still ignoring _generated_ .md files like our changelogs, the api-report files, and the generated docs sections. Additionally, the `yarn format` and `yarn lint` commands were configured slightly differently, which was confusing, so I've unified those and simplified the lint.ts script at the same time. ### Change Type - [ ] `patch` — Bug fix - [ ] `minor` — New feature - [ ] `major` — Breaking change - [ ] `dependencies` — Changes to package dependencies[^1] - [ ] `documentation` — Changes to the documentation only[^2] - [ ] `tests` — Changes to any test code only[^2] - [x] `internal` — Any other changes that don't affect the published package[^2] - [ ] I don't know [^1]: publishes a `patch` release, for devDependencies use `internal` [^2]: will not publish a new version
This commit is contained in:
parent
e527d7d0d7
commit
47a85896e0
21 changed files with 78 additions and 123 deletions
|
@ -1,70 +1,26 @@
|
|||
import ignore from 'ignore'
|
||||
import * as path from 'path'
|
||||
import { exec } from './lib/exec'
|
||||
import { REPO_ROOT, readFileIfExists } from './lib/file'
|
||||
|
||||
const ESLINT_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx']
|
||||
const PRETTIER_EXTENSIONS = ['js', 'jsx', 'ts', 'tsx', 'json']
|
||||
import { REPO_ROOT } from './lib/file'
|
||||
|
||||
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',
|
||||
'--cache',
|
||||
...prettierFiles,
|
||||
])
|
||||
await exec('yarn', [
|
||||
'run',
|
||||
'-T',
|
||||
'eslint',
|
||||
'--report-unused-disable-directives',
|
||||
shouldFix ? '--fix' : null,
|
||||
...eslintFiles,
|
||||
])
|
||||
await exec('yarn', ['prettier', shouldFix ? '--write' : '--check', '--cache', relativeCwd], {
|
||||
pwd: REPO_ROOT,
|
||||
})
|
||||
await exec(
|
||||
'yarn',
|
||||
[
|
||||
'eslint',
|
||||
'--report-unused-disable-directives',
|
||||
'--no-error-on-unmatched-pattern',
|
||||
shouldFix ? '--fix' : null,
|
||||
relativeCwd,
|
||||
],
|
||||
{ pwd: REPO_ROOT }
|
||||
)
|
||||
} catch (error) {
|
||||
process.exit(1)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue