- 开发工具
【免费下载链接】fixmyjs
Automatically fix silly lint errors.
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.jsCLI 的完整实现位于 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.jsemptyStatement:清理多余的空语句(如孤立的分号)—— lib/rules/emptyStatement.jsinitUndefined:把var a = undefined重写为var a—— lib/rules/initUndefined.jsinvalidConstructor:禁止用new初始化原生基本类型构造器 —— lib/rules/invalidConstructor.jsisNaN:把x == NaN的写法替换为isNaN(x)—— lib/rules/isNaN.jsuseLiteral:把new String('x')之类的写法改回字面量 —— lib/rules/useLiteral.js
② 可选规则(配置项为 true 时启用)
| 规则 | 效果 | 源码 |
|---|---|---|
camelcase | 标识符统一转成 camelCase | lib/rules/camelCase.js |
snakecase | 标识符统一转成 snake_case | lib/rules/snake_case.js |
curly | 为 if/for 等语句补上花括号 | lib/rules/curly.js |
es3 | 给parseInt自动补第二个 radix 参数 | lib/rules/parseInt.js |
nonew | 移除仅为副作用而写的new | lib/rules/newSideEffects.js |
multivar | 合并多个单行var声明 | lib/rules/multiVar.js |
plusplus | 把i++改写为i += 1 | lib/rules/updateExpression.js |
eqeqeq | 强制严格相等:==→=== | lib/rules/eqeqeq.js |
⚠️ 注意:camelcase和snakecase互斥,同时开启会直接报错(见 lib/index.js 的校验逻辑)。
③ 反向规则(配置项为 false 时生效)
debug:移除debugger调试语句 —— lib/rules/debugger.jssub:把obj["key"]转为点号访问obj.key—— lib/rules/dotNotation.js
编辑器一键修复:把 fixmyjs 接进你的工作流
命令行固然方便,但日常写代码时谁也不想中途切去终端。fixmyjs 官方维护了一套编辑器生态,README 的 Tools 一节(README.md)列出了全部官方集成:
Atom 插件
Atom 用户可以通过包管理器搜索atom-fixmyjs插件安装,在编辑器内直接调用 fixmyjs 修复当前文件,无需离开 Atom。
集成步骤:
- 先按上文全局安装 fixmyjs 命令行工具
- 在 Atom 中打开 Settings → Install,搜索 fixmyjs 并安装插件
- 打开任意
.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.
相关推荐
一条命令跑起双容器电商网站:Tutorials 带你掌握 Docker Compose 核心用法
一条命令跑起双容器电商网站:Tutorials 带你掌握 Docker Compose 核心用法 本文基于 Tutorials 开源项目(Jake Wright
终极Lebab编辑器插件使用指南:在VSCode、Atom和Sublime中一键升级代码
终极Lebab编辑器插件使用指南:在VSCode、Atom和Sublime中一键升级代码 Lebab是一个强大的JavaScript代码转换工具,能够将ES5代
开发工具编译器emilianJR/chilloutmix_NiPrunedFp32Fix社区影响分析:AI创作民主化
emilianJR/chilloutmix_NiPrunedFp32Fix社区影响分析:AI创作民主化 emilianJR/chilloutmix_NiPrun
基础模型计算机视觉大模型模型推理服务
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考