热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用webstrom的宏,使用eslint规则保存文件自动格式化代码(mac版)

**20170901更新***之前用webstorm+prettier之后,发现如果切换到旧的项目,用webstorm一保存强制使用prettier的规范就悲剧了!于是改成每个项目用自己的

**20170901 更新 ***
之前用webstorm+prettier之后,发现如果切换到旧的项目,用webstorm一保存强制使用prettier的规范就悲剧了!于是改成每个项目用自己的eslint配置的方式,这样没有eslint配置的旧项目不会受编辑器的影响!

1.全局安装eslint相关

npm i eslint  -g
npm i eslint-plugin-react -g
npm i eslint-config-react-app -g
npm i eslint-plugin-import -g
npm i eslint-loader -g
npm i eslint-plugin-flowtype -g
npm i eslint-plugin-jsx-a11y -g
npm i babel-eslint -g

2.webstorm 配置 eslint

Preference->Tools->External Tools, Click "+“




3.Record the macro
Edit > Macros > Start Macro recording

i. Cmd+Alt+L   (使用editorconfig格式化代码)

ii. Cmd+Alt+S  (保存)

iii. Tools->External Tools->ESlint Fix


Stop recording the macro clicking on the Stop button on the bottom right of the page.
Give this macro a name like "Format(editorconfig+eslint) and Save"


4.Assing Ctrl+S to "Format(editorconfig+eslint) and Save"
open WebStorm->Preferences;
search for "keymap" and open it;
search "Format(editorconfig+eslint) and Save" and double click the action "Format(editorconfig+eslint) and Save";
select "Add Keyboard Shortcut";
select "Cmd+S" as first stroke.
it will report conflicts. Ignore it and click OK button
WebStorm will show a warning "The shortcut is already assigned to other actions. Do you want to remove other assignments?" Click "Remove" button


5.webstorm的自动格式化需要特殊设置:勾选 Keep when reformatting->Simple methods in one line

否则会把下面的一行
console.groupEnd = console.groupEnd || function () {}
变成两行,
console.groupEnd = console.groupEnd || function () {
}
丑陋而且没有必要


PS:每次cmd+s的时候,都要显示ESlint Fix执行结果的命令行窗口,可以通过cmd+4关闭。如果觉得每次都需要额外操作来关闭这个窗口,太麻烦,可以选择将其固定在左侧/右侧,或者悬浮.
**20170827 更新 ***
最近公司有同事在使用VSCode之后,用了Prettier这个插件,引入了一个新的特性:Bracket Spacing (Print spaces between brackets in object literals)
效果如下图:



这个特性是EditorConfig不支持的,为了解决这个问题,只好在Webstorm中引入Prettier,而且用Prettier的规则,覆盖EditorConfig的规则,在文件保存的时候,只使用Prettier!


1.全局安装prettier

npm install prettier -g


2.webstorm设置prettier

Preference->Tools->External Tools, Click "+“



更多参数说明和IDE集成说明,请查看https://github.com/prettier/prettier


3.Record the macro
Edit > Macros > Start Macro recording
Tools->External Tools->prettier,and then cmd+4, and then cmd+4 , and then cmd+alt+s
Stop recording the macro clicking on the Stop button on the bottom right of the page.
Give this macro a name like "Format(prettier) and Save"


4.Assing Ctrl+S to "Format(prettier) and Save"
open WebStorm->Preferences;
search for "keymap" and open it;
search "Format(prettier) and Save" and double click the action "Format(prettier) and Save";
select "Add Keyboard Shortcut";
select "Cmd+S" as first stroke.
it will report conflicts. Ignore it and click OK button
WebStorm will show a warning "The shortcut is already assigned to other actions. Do you want to remove other assignments?" Click "Remove" button



****下面是旧版,用的是EditorConfig********


这个git的截图大家是不是很熟悉,一个项目多人协作。有人提交前,格式化了代码,有人没有,进仓库的时候,各种合并!真正修改的几行,散落在这些无用的代码中,不方便快速定位!

如果大家都用同样的IDE,IDE在保存文件的时候,能自动格式化,就能最大限度的规避这种问题!

很幸运,webstorm正好有这个功能!

PS: go的fmt已经在语言级别实现保存自动格式代码了!不需要在ide设置宏!

参考资料:http://stackoverflow.com/questions/21217791/how-to-auto-format-code-in-webstorm

Record the macro

  1. Edit > Macros > Start Macro recording
  2. Press Cmd+Alt+L, and then Cmd+Alt+S
  3. Stop recording the macro clicking on the Stop button on the bottom right of the page.
  4. Give this macro a name like "Format and Save"

Assing Ctrl+S to "Format and Save"

  1. open WebStorm->Preferences;
  2. search for "keymap" and open it;
  3. search "Format and Save" and double click the action "Format and Save";
  4. select "Add Keyboard Shortcut";
  5. select "Cmd+S" as first stroke.
  6. it will report conflicts. Ignore it and click OK button
  7. WebStorm will show a warning "The shortcut is already assigned to other actions. Do you want to remove other assignments?" Click "Remove" button

That's it.

PS: websotrm自带的format其实是EditorConfig,可以在项目下新增一个.editorconfig 文件,覆盖默认的规则:
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = false
insert_final_newline = false



推荐阅读
  • 本文介绍了Python语言程序设计中文件和数据格式化的操作,包括使用np.savetext保存文本文件,对文本文件和二进制文件进行统一的操作步骤,以及使用Numpy模块进行数据可视化编程的指南。同时还提供了一些关于Python的测试题。 ... [详细]
  • Python爬虫中使用正则表达式的方法和注意事项
    本文介绍了在Python爬虫中使用正则表达式的方法和注意事项。首先解释了爬虫的四个主要步骤,并强调了正则表达式在数据处理中的重要性。然后详细介绍了正则表达式的概念和用法,包括检索、替换和过滤文本的功能。同时提到了re模块是Python内置的用于处理正则表达式的模块,并给出了使用正则表达式时需要注意的特殊字符转义和原始字符串的用法。通过本文的学习,读者可以掌握在Python爬虫中使用正则表达式的技巧和方法。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • 本文介绍了django中视图函数的使用方法,包括如何接收Web请求并返回Web响应,以及如何处理GET请求和POST请求。同时还介绍了urls.py和views.py文件的配置方式。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法
    本文介绍了修复安装win10失败并提示“磁盘布局不受UEFI固件支持”的方法。首先解释了UEFI的概念和作用,然后提供了两种解决方法。第一种方法是在bios界面中将Boot Mode设置为Legacy Support,Boot Priority设置为Legacy First,并关闭UEFI。第二种方法是使用U盘启动盘进入PE系统,运行磁盘分区工具DiskGenius,将硬盘的分区表设置为gpt格式,并留出288MB的内存。最后,通过运行界面输入命令cmd来完成设置。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 如何使用Java获取服务器硬件信息和磁盘负载率
    本文介绍了使用Java编程语言获取服务器硬件信息和磁盘负载率的方法。首先在远程服务器上搭建一个支持服务端语言的HTTP服务,并获取服务器的磁盘信息,并将结果输出。然后在本地使用JS编写一个AJAX脚本,远程请求服务端的程序,得到结果并展示给用户。其中还介绍了如何提取硬盘序列号的方法。 ... [详细]
  • 安卓select模态框样式改变_微软Office风格的多端(Web、安卓、iOS)组件库——Fabric UI...
    介绍FabricUI是微软开源的一套Office风格的多端组件库,共有三套针对性的组件,分别适用于web、android以及iOS,Fab ... [详细]
author-avatar
laoshu仔
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有