@bfra.me/slint-config (英语)
Bfra.me的共享ESLint配置.
安装
国家预防机制
npm install --save-dev @bfra.me/eslint-config eslint
菲律宾
pnpm add --save-dev @bfra.me/eslint-config eslint
雅伦
yarn add --dev @bfra.me/eslint-config eslint
使用量
添加或更新您的 eslint.config.js 包含以下内容的文档 :
import preset from "@bfra.me/eslint-config"
export default preset()
标记下方支持
输入您的 Markdown 文件, 支持 CommunityMark 和 GitHub Flavored Markdown (GFM) 。 在 YAML 格式、 TOML 格式或 JSON 格式中解析前置事项, 在文档中可选地插入代码块 。 盖在官上 @ slint/ 标记下 插件 .
快速启动
import {defineConfig} from "@bfra.me/eslint-config"
// Enable with defaults (GFM + YAML frontmatter)
export default defineConfig({
markdown: true
})
语言模式: CommunityMark vs GFM
选择适合您使用的 Markdown 解析模式 :
通用马克( 标准)
在最大可移植性和严格遵守标准规格时使用CommonMark:
export default defineConfig({
markdown: {
language: 'commonmark'
}
})
最佳服务:
- README 文件
- 便携式文件
- 跨平台内容
- 严格Markdown合规
GitHub 平地标记( GFM)
GFM 用于 GitHub 和文档站点常用的增强特性 :
export default defineConfig({
markdown: {
language: 'gfm'
}
})
添加支持 :
- 表格
- 任务列表( E)
- [ ] Todo item(中文(简体) ) - 切换( R)
~~deleted text~~(中文(简体) ) - 自动链接( 自动 URL 链接)
最佳服务:
- 文件网站
- GitHub 读取ME 文件
- 博客文章
- 维基页面
GFM 是默认模式 当您启用 Markdown 支持时.
前题解析
大多数静态站点生成器(Astro,Next.js,Jekyll)使用前置物质存储元数据到Markdown文件的顶端. 您可以配置哪个格式来解析, 或者完全禁用它 .
YAML 前题( 建议)
export default defineConfig({
markdown: {
frontmatter: 'yaml'
}
})
带有 YAML 前题的 Markdown 文件 :
---
title: Getting Started
date: 2025-11-20
tags: [tutorial, documentation]
---
# Getting Started
Your content here...
最佳服务:
- 文献网站(Astro、Docuraurus、VitePress)
- 博客文章
- 大部分固定地点发电机
TOML 前题
export default defineConfig({
markdown: {
frontmatter: 'toml'
}
})
带有 TOML 前题的 Markdown 文件 :
+++
title = "Getting Started"
date = 2025-11-20
tags = ["tutorial", "documentation"]
+++
# Getting Started
Your content here...
最佳服务:
- 雨果遗址
- 配置重的前题
JSON 前题
export default defineConfig({
markdown: {
frontmatter: 'json'
}
})
带有 JSON 前题的 Markdown 文件 :
;;;
{
"title": "Getting Started",
"date": "2025-11-20",
"tags": ["tutorial", "documentation"]
}
;;;
# Getting Started
Your content here...
禁用前题
对于简单的没有元数据的Markdown文件:
export default defineConfig({
markdown: {
frontmatter: false
}
})
YAML 是默认的前题格式 当您启用 Markdown 支持时.
代码块处理
启用代码块林入
export default defineConfig({
markdown: {
codeBlocks: {
typescript: true,
javascript: true,
jsx: true,
json: true,
yaml: true
}
}
})
启用了代码块处理( 默认) , 将栅栏化的代码块取出并作为单独的虚拟文件 :
# Example
```typescript
// This TypeScript code will be linted with TypeScript rules
interface User {
name: string
age: number
}
const user: User = {
name: "John",
age: 30
}
```
文件名 Meta 支持
使用文件名注释来更好地报告错误 :
```typescript filename="src/user.ts"
export interface User {
name: string
age: number
}
```
门窗将把这个代码块当作它在里面 src/user.ts 用于错误消息和规则上下文.
代码块中支持的语言
支持下列语言:
- 类型脚本 (单位:千美元)
.ts, (中文(简体) ),.tsx) - 完整类型脚本- ESLint 支持 - Java 脚本 (单位:千美元)
.js, (中文(简体) ),.jsx) - ES模块,async/await,现代语法 - 联合来文X/TSX - 反应组件并有正放
- 贾森 - JSON/JSON5语法验证
- 也门 - YAML 语法验证
在 Markdown 中禁用指令
使用 HTML 注释来禁用 Markdown 文件内的 ESLint 规则 :
<!-- eslint-disable markdown/no-html -->
<div>Custom HTML content</div>
<!-- eslint-enable markdown/no-html -->
配置示例
文档站点( Astro, Docusaurus, VitePress) Name
import {defineConfig} from "@bfra.me/eslint-config"
export default defineConfig({
markdown: {
language: 'gfm',
frontmatter: 'yaml',
codeBlocks: {
typescript: true,
javascript: true
}
}
})
简单读取文件
import {defineConfig} from "@bfra.me/eslint-config"
export default defineConfig({
markdown: {
language: 'commonmark',
frontmatter: false,
files: ['README.md', '**/README.md']
}
})
有代码示例的博客帖子
import {defineConfig} from "@bfra.me/eslint-config"
export default defineConfig({
markdown: {
language: 'gfm',
frontmatter: 'yaml',
codeBlocks: {
typescript: true,
javascript: true,
jsx: true
},
files: ['blog/**/*.md', 'posts/**/*.md']
}
})
自定义规则覆盖
import {defineConfig} from "@bfra.me/eslint-config"
export default defineConfig({
markdown: {
language: 'gfm',
rules: {
// Allow HTML in Markdown
'markdown/no-html': 'off',
// Warn on missing code block languages
'markdown/fenced-code-language': 'warn',
// Enforce alt text for images
'markdown/require-alt-text': 'error'
}
}
})
默认规则
这些规则被放出框外,以便抓住常见的马克倒置问题:
markdown/fenced-code-language- 需要在有栅栏的代码块上提供语言标识符markdown/heading-increment- 实施适当的项目级递增markdown/no-duplicate-definitions- 防止重复的链接/图像定义markdown/no-empty-definitions- 防止空链接/图像定义markdown/no-empty-images- 防止空图像替代文本markdown/no-empty-links- 防止空链接文本markdown/no-invalid-label-refs- 防止无效的引用样式链接markdown/no-missing-label-refs- 防止缺少参考定义markdown/no-missing-link-fragments- 验证标题碎片链接markdown/no-multiple-h1- 每个文件执行单个h1标题markdown/no-unused-definitions- 防止未使用的链接/图像定义markdown/require-alt-text- 图像需要替代文本markdown/table-column-count- 验证表格列的一致性
从简单配置中移入
简单的布尔形式仍然有效:
// Simple form
export default defineConfig({
markdown: true
})
这相当于:
// Explicit defaults
export default defineConfig({
markdown: {
language: 'gfm',
frontmatter: 'yaml',
codeBlocks: {
javascript: true,
json: true,
jsx: true,
typescript: true,
yaml: true
}
}
})
您需要扩展的窗体, 只要您想要自定义这些默认 .
解决问题
代码块处理问题
遇到什么问题吗? 尝试这些修正 :
-
选择性启用语言 在你的环境中工作:
export default defineConfig({ markdown: { codeBlocks: { typescript: true, javascript: true, jsx: false, // Disable if causing issues json: false, yaml: false } } }) -
检查插件冲突 - 一些ESLint插件需要完整SourceCode API,在虚拟代码块文件中不可用
前题分析出错
前题分析不正确吗? 检查这些共同问题:
- 验证分隔符 :
---也门,+++为TOML,;;;给 JSON 的 - 用专用解析器验证您的前题语法
- 如果你不需要前题,请禁用:
frontmatter: false
业绩问题
林廷太久了吗? 这是如何加快速度:
-
目标特定目录 :
files: ['docs/**/*.md'] -
使用
ignores选项 :export default defineConfig({ ignores: ['docs/api/**/*.md', '**/CHANGELOG.md'] })