Javascript 使用“---fix”标志自动化ESLint有哪些问题?

Javascript 使用“---fix”标志自动化ESLint有哪些问题?,javascript,npm,eslint,Javascript,Npm,Eslint,使用--fix标志自动化ESLint是一种好的做法,还是从长远来看会产生问题 例如,我正在使用npm和的“预启动”脚本。这意味着每次我运行npm start时,ESLint都会运行,并修复代码中任何可修复的错误。这会导致什么问题?这可能导致的唯一真正问题是,在npm start上运行的代码可能与您编写的代码不同。您应该让ESLint在启动应用程序之前对代码进行更改,这可能会(潜在地)导致意外行为。这取决于项目的设置方式和应用程序的部署方式 在可自动固定的机器中,扳手就在旁边;它可以改变的不仅仅是

使用--fix标志自动化ESLint是一种好的做法,还是从长远来看会产生问题


例如,我正在使用
npm
的“预启动”
脚本。这意味着每次我运行
npm start
时,ESLint都会运行,并修复代码中任何可修复的错误。这会导致什么问题?

这可能导致的唯一真正问题是,在
npm start
上运行的代码可能与您编写的代码不同。您应该让ESLint在启动应用程序之前对代码进行更改,这可能会(潜在地)导致意外行为。这取决于项目的设置方式和应用程序的部署方式

在可自动固定的机器中,扳手就在旁边;它可以改变的不仅仅是间距和分号。虽然ESLint(在使用
--fix
运行时)尽力不破坏代码的功能,但在编写代码和运行代码之间的任何时候,您都有可能更改代码库的行为。ESLint试图确保他们不会以破坏/更改任何行为的方式自动修复代码,但可能会发生错误/事故,这些错误/事故可能会对代码进行足够的更改,从而使代码表现出不同的行为。顺便说一句,这里有一个有趣的对话

如果您在
npm测试套件中运行ESLint,并且除非lint规则通过,否则不部署应用程序,那么问题就不大了(因为这不会发生在部署的应用程序上,只会发生在本地;如果发现代码与您的样式指南不匹配,您将阻止应用程序部署)

否则,
--fix
在允许人们按照自己的意愿编写代码,同时保持一致的风格和半自动地避免代码库中的“问题模式”方面会很有用。虽然它不能修复所有规则,但它可以使团队的开发更加顺利。如果需要,您甚至可以在git预提交挂钩中运行此自动修复,以确保提交的代码是固定版本


示例:

@Nick_Bartlett您能举个例子说明
--fix
标志可能会破坏代码吗?因为我想不出一个场景。据我所知,ESLint只修复空格和分号…@shuzo用ESLint如何破解代码的例子更新了答案;这是一个很好的问题,我认为值得把答案放进去,而不是放在评论里。只是为了澄清一下,ESLint非常努力地避免破坏更改。这是ESLint中任何自动修复功能的指导原则,以避免创建工作方式与以前不同的代码。具体来说,EQEQ的规则是只修复静态可验证的情况:然而,bug确实会不时发生,autofix有时会破坏代码。ESLint将修复报告中的病例作为优先事项。谢谢@IlyaVolodin-这是一个很好的观点。在讨论如何破解代码时,我会在答案中添加一个“但尽量不要”。在这种情况下,工作流最好在运行
npm start
或提交/推送代码之前进行自动修复,因为您可能希望签入“修复”代码。