☰
fixmyjs 编辑器集成终极指南:Atom、Brackets、Sublime 一键自动修复 JavaScript
2026/10/23 5:59:07 网站建设 项目流程
  • 开发工具

【免费下载链接】fixmyjs

Automatically fix silly lint errors.

项目地址:https://gitcode.com/gh_mirrors/fi/fixmyjs
点击查看免费下载

fixmyjs 是一个专门用来自动修复"愚蠢" JavaScript lint 错误的开源命令行工具,它能按 JSHint 规则一键修复代码中的低级问题,并且通过 Atom、Brackets、Sublime Text 等编辑器插件实现"一键修复",让新手告别手动改错。

fixmyjs 是什么:自动修复 JavaScript 错误的瑞士军刀

很多新手写 JavaScript 时都遇到过这种场景:JSHint 报了一堆== should be ===、curly braces required、undefined is not defined之类的错误,每一条都要手动去改,烦不胜烦。

fixmyjs 的定位就是把这些规则明确、修复方式唯一的 lint 错误自动化。它的核心特点:

  • ⚡非破坏性修复:只改写"明显写错"的地方,不重排你的代码逻辑
  • 🧩规则驱动:每条修复规则独立实现,位于 lib/rules/ 目录,规则开关由配置决定
  • 🛠️多编辑器生态:官方已支持 Atom 插件、Brackets 插件、Gulp/Grunt 插件和 Sublime Text 插件
  • ⌨️CLI 友好:支持--dry-run先预览 diff,确认无误再真正落盘

💡 简单理解:JSHint 负责"挑错",fixmyjs 负责"认错就改"。

30 秒上手:安装 fixmyjs 命令行工具

fixmyjs 通过 npm 全局安装,一条命令搞定:

npm install fixmyjs -g

安装后,终端输入文件路径即可原地修复:

fixmyjs your_file.js

如果你只是想先看看"它会改什么",而不希望文件被直接改动,加上--dry-run(或--diff)参数,终端会输出红绿配色的 diff:

fixmyjs --dry-run your_file.js

CLI 的完整实现位于 lib/cli.js,常用参数一览:

参数作用
-c, --config指定自定义.jshintrc配置文件
-r, --dry-run只做预演,输出 diff 不写文件
-d, --diff同 dry-run,显示差异
-p, --patch输出 patch 文件到标准输出
-n, --indent-pref指定缩进风格(tabs或spaces)
-l, --legacy使用 legacy 修复模式

它还会自动读取目录下的.jshintrc作为规则配置,并用.jshintignore跳过不想处理的文件(参见 lib/cli.js)。

fixmyjs 自动修复的 14 类 JavaScript 常见问题

fixmyjs 内置规则分为三组,全部注册在 lib/rules/index.js 中。

① 内置规则(默认总是生效)

这 6 条规则无需配置,开箱即修:

  • delete:移除对变量的delete操作 —— lib/rules/delete.js
  • emptyStatement:清理多余的空语句(如孤立的分号)—— lib/rules/emptyStatement.js
  • initUndefined:把var a = undefined重写为var a—— lib/rules/initUndefined.js
  • invalidConstructor:禁止用new初始化原生基本类型构造器 —— lib/rules/invalidConstructor.js
  • isNaN:把x == NaN的写法替换为isNaN(x)—— lib/rules/isNaN.js
  • useLiteral:把new String('x')之类的写法改回字面量 —— lib/rules/useLiteral.js

② 可选规则(配置项为 true 时启用)

规则效果源码
camelcase标识符统一转成 camelCaselib/rules/camelCase.js
snakecase标识符统一转成 snake_caselib/rules/snake_case.js
curly为 if/for 等语句补上花括号lib/rules/curly.js
es3给parseInt自动补第二个 radix 参数lib/rules/parseInt.js
nonew移除仅为副作用而写的newlib/rules/newSideEffects.js
multivar合并多个单行var声明lib/rules/multiVar.js
plusplus把i++改写为i += 1lib/rules/updateExpression.js
eqeqeq强制严格相等:==→===lib/rules/eqeqeq.js

⚠️ 注意:camelcase和snakecase互斥,同时开启会直接报错(见 lib/index.js 的校验逻辑)。

③ 反向规则(配置项为 false 时生效)

  • debug:移除debugger调试语句 —— lib/rules/debugger.js
  • sub:把obj["key"]转为点号访问obj.key—— lib/rules/dotNotation.js

编辑器一键修复:把 fixmyjs 接进你的工作流

命令行固然方便,但日常写代码时谁也不想中途切去终端。fixmyjs 官方维护了一套编辑器生态,README 的 Tools 一节(README.md)列出了全部官方集成:

Atom 插件

Atom 用户可以通过包管理器搜索atom-fixmyjs插件安装,在编辑器内直接调用 fixmyjs 修复当前文件,无需离开 Atom。

集成步骤:

  1. 先按上文全局安装 fixmyjs 命令行工具
  2. 在 Atom 中打开 Settings → Install,搜索 fixmyjs 并安装插件
  3. 打开任意.js文件,使用插件提供的命令触发修复

Brackets 插件

Brackets 用户同样可以搜索安装brackets-fixmyjs扩展。Brackets 本身主打代码编辑体验,装上这个插件后,保存前自动按 JSHint 规则清理低级错误,非常顺滑。

Sublime Text 插件

Sublime 用户可安装sublime-fixmyjs插件(由 Addy Osmani 维护)。安装后在命令面板中运行对应命令,即可对当前打开的文件执行 fixmyjs 修复。

Gulp / Grunt 插件(补充)

如果你习惯用构建工具链,还可以选择:

  • gulp-fixmyjs:在 Gulp 任务流中接入修复步骤
  • grunt-fixmyjs:在 Grunt 流程中一键批量修复

📌 小贴士:编辑器插件本质上是替你调用底层的 fixmyjs CLI 或 API,所以先用命令行跑一次--dry-run预览改动,是养成肌肉记忆的好习惯。

两种修复模式:非 legacy 与 legacy 模式怎么选

fixmyjs 提供两种引擎,位于 lib/index.js 和 lib/legacy.js:

  • 非 legacy 模式(默认,推荐):基于 esprima 解析出 AST,逐节点应用规则,再用 escodegen 重新生成代码。支持上文全部 14 条规则。
  • legacy 模式:先用 JSHint 报出错误,再用正则和字符串替换逐行修复。CLI 中加--legacy启用:
fixmyjs --legacy your_file.js

官方说明(README.md):legacy 模式更保守、不易破坏代码,但支持的规则更少;非 legacy 模式规则覆盖更广,但因为是整树重写,理论上"破坏性"略高。对新手而言,先用默认模式 +--dry-run预览是最稳的路径。

以编程方式调用

不想跑命令行的话,fixmyjs 也可以作为 Node.js 模块引入(lib/index.js 导出了fix方法):

var fixmyjs = require('fixmyjs') var stringFixedCode = fixmyjs.fix(stringOfCode, objectOfOptions)

这也是各编辑器插件能"一键修复"的底层原理。

最佳实践清单:让自动修复更省心

  • ✅先 dry-run,后落盘:fixmyjs --dry-run看 diff,确认无意外再执行
  • ✅用.jshintrc统一管理规则:把camelcase、curly、eqeqeq等开关写进配置,团队共享
  • ✅配合.jshintignore:把third_party/、vendor/这类目录排除掉
  • ✅修复后跑一遍测试:fixmyjs 目标是"非破坏性",但任何批量改写都值得用测试兜底
  • ⚠️camelCase 与 snake_case 二选一:两者同时开启会直接抛错,属于设计上的保护机制
  • ⚠️提交前看 diff:编辑器插件的一键修复改完后,建议快速扫一眼 git diff 再提交

常见问题 FAQ

Q:fixmyjs 会破坏我的业务逻辑吗?A:设计上它只做"规则唯一解"的改写(如==补成===、补花括号),并保留了 shebang 行和注释位置(lib/index.js 中有专门处理)。但批量改写仍建议配合版本控制使用。

Q:支持 ES6/ES2015 吗?A:该版本(1.0.3,见 package.json)基于较早期的 esprima/escodegen 解析,对现代语法支持有限。处理新项目前建议先在单文件上 dry-run 验证。

Q:如何只修复某个目录?A:直接把目录路径传给 CLI,fixmyjs 会递归遍历其中所有.js文件并应用该目录下的.jshintrc(见 lib/cli.js 的目录遍历逻辑)。

Q:修复完成后终端输出什么?A:每个文件处理完会打印✓ 文件名 done.;如果有--diff/--dry-run,则会额外输出红绿 diff。

写在最后

fixmyjs 把"改错"这件重复劳动压缩成了一条命令:全局安装、接入 Atom / Brackets / Sublime 插件、配置.jshintrc,剩下的交给它。规则源码全部开放在 lib/rules/ 中,想理解某条修复的具体行为,直接打开对应文件阅读即可。

  • 项目说明:README.md
  • 编码规范:CONTRIBUTING.md
  • 核心 API:lib/index.js
  • CLI 入口:lib/cli.js
  • 开发工具

【免费下载链接】fixmyjs

Automatically fix silly lint errors.

项目地址:https://gitcode.com/gh_mirrors/fi/fixmyjs
点击查看免费下载
上一篇:如何成为LittleFS核心贡献者:完整开源贡献指南
下一篇:如何将Openblocks页面嵌入React应用:替代iFrame的完整方案

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询