
ESLint 正式支持 shell 脚本检查,推出 @eslint/shell 插件
来源标题:ESLint now officially supports linting of shell scripts
ESLint 宣布通过新插件 @eslint/shell 正式支持 shell 脚本的静态检查。该插件提供 shell 解析、一套受 ShellCheck 启发的规则及推荐配置,推荐配置以 Bash 为基础,可捕获未加引号的变量展开、未使用变量和不安全 read 用法等常见问题。用户可从 npm 安装后加入 eslint.config.js 启用,这是 ESLint 自 2024 年 7 月提出通用 linter 计划后新增支持的又一种语言。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
发布于 2026年11月6日,分类:公告 朝着提供语言无关的源代码检查平台又迈进了一步。 早在 2024 年 7 月,我们就宣布了 计划,要让 ESLint 成为更通用的 linter,能够检查任何 语言。自那以后,我们陆续增加了对 JSON、Markdown 和 CSS 的官方支持。 今天,我们很高兴通过引入 @eslint/shell 插件,将 shell 脚本也加入这一行列。 @eslint/shell 插件是 ESLint 官方支持的语言插件。它为 shell 脚本提供解析能力,附带一套受 ShellCheck 启发的规则, 以及一份推荐配置。要使用它,请从 npm 安装: npm install @eslint/shell -D 1 复制代码到剪贴板 然后将推荐配置添加到你的 eslint.config.js: import { defineConfig } from "eslint/config"; import shell from "@eslint/shell"; export default defineConfig([ plugins: { shell }, extends: ["shell/recommended"], ]); 1 2 3 4 5 6 7 8 9 复制代码到剪贴板 推荐配置使用 Bash,并启用能够捕获常见 问题的规则,例如未加引号的展开、未使用的变量以及不安全的 read 用法。你也可以手动配置该插件并选择 shell 方言: import { defineConfig } from "eslint/config"; import shell from "@eslint/shell"; export default defineConfig([ files: ["**/*.sh"], plugins: { shell }, language: "shell/posix", rules: { "shell/no-backticks": "error", "shell/no-unquoted-expansions": "error", ]); 1 2 3 4 5 6 7 8 9 10 11 12 13 14 复制代码到剪贴板 该插件支持 Bash、POSIX sh 和 MirBSD Korn shell(mksh)。其规则 涵盖诸如遗留的命令替换、遍历 ls 输出、 未加引号的展开以及 printf 格式字符串中的变量等问题。完整的 规则列表和配置选项,请参阅 README。 @eslint/shell 插件将 shell 脚本解析为 ESTree 风格的语法 树,ESLint 规则可以像遍历 JavaScript 一样遍历它。这 意味着你可以编写自定义规则来强制执行对 你的项目重要的约定。该解析器构建在 mvdan-sh 之上,后者是 shfmt 使用的解析器。 你可以在 ESLint Code Explorer 中探索 shell 语法树。 Shell 脚本是许多项目的重要组成部分,从构建和发布 自动化到本地开发工具。借助 @eslint/shell,你可以使用 ESLint 的配置 系统和熟悉的规则 API,将 shell 脚本与其余代码一起检查。 随着 shell 支持的加入,ESLint 继续成长为一个多功能 工具,能够检查多种源代码文件。我们希望这个插件能帮助你 发现脚本中的问题,并让你更轻松地在项目中保持一致的 质量。 提醒一下,ESLint 是一个独立的开源项目,由一群 志愿者在业余时间维护。如果你喜欢使用 ESLint,请 与你的公司谈谈赞助该项目的事宜。 ESLint 创建者,独立软件开发者、顾问、教练和作者。
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。