当前位置: 首页 > news >正文

JavaScript 代码格式化

图片来源:pixiv 54808053
每个人都可能有自己的代码风格和格式,但如果一个项目中的所有人都遵循同一风格的话,这个项目就能更顺利地进行。每个人未必能同意每一处格式规则,而且其中的不少规则需要一定时间的适应,但整个项目服从统一的编程风格是很重要的,只有这样才能让所有人轻松地阅读和理解代码。

更新于 2018.07.27
首发于夏味的博客: xiaweiss.com

本篇由于图片较多,如需要看带图版本的文章,请 点击这里阅读原文

介绍

关于代码格式化,有3个相关的概念,比较容易混淆

  1. 代码格式:人工自定义的、或者遵循某种通用规范 例如 JavaScript Standard Style,Airbnb JavaScript Style,Google JavaScript Style 等)
  2. 代码检查:依据一种 指定的代码格式,用提示出不符合格式的代码(ESLint、TSLint、stylelint 等)
  3. 代码格式化(code format):依据一种 指定的代码格式,修正 不符合格式的代码(ESLint、Prettier 等)

格式化工具支持 CLI 模式,可以在 package.json 中配置命令 (CLI 模式其他参数请参考各官方文档)

"scripts": {
  "standard": "standard --fix",
  "prettier": "prettier --write '*.js'",
  "eslint": "eslint --fix '*.js'"
},
复制代码

设定 JavaScript 代码格式,从简单到严格依次有下面的方式,选一种即可

  1. 使用 EditorConfig,添加配置文件.editorconfig即可, 可以设置部分的基本格式,然后使用编辑器默认的格式化
  2. 使用 Prettier,不做代码检测,直接格式化。也可以添加配置文件 .prettierrc 自定义格式
  3. 使用标准的 JavaScript Standard Style,直接安装即可 npm install standard --save-dev, 不需要任何配置文件。 然后使用 standard 插件格式化( 可以不安装 ESlint 代码检查 )
  4. 使用 ESLint, 执行命令行 npx eslint --init 初始化即可,然后可以自己选择配置规则,之后会自动生成配置文件,并安装相关依赖。并且可以自定义规则。然后使用插件格式化( ESLint 插件,或者 Pretter + ESLint 同时使用)

.editorconfig 文件示例:

root = true

[*]                             # [] 内是正则表达式,匹配文件
charset = utf-8                 # 文本格式
end_of_line = lf                # 配置结尾符号
insert_final_newline = true     # 文件末尾空行
indent_style = space            # 缩进使用空格
indent_size = 2                 # 缩进长度
trim_trailing_whitespace = true # 去掉行尾多余的空格
复制代码

关于 CSS 的代码检查,可以使用工具 stylelint 安装npm install stylelint --save-dev 安装代码格式 npm install stylelint-config-standard --save-dev Vue 文件还需要安装预处理器 npm install @mapbox/stylelint-processor-arbitrary-tags --save-dev

添加配置文件 .stylelintrc

{
  "defaultSeverity": "warning",
  "processors": ["@mapbox/stylelint-processor-arbitrary-tags"],
  "extends": "stylelint-config-standard",
  "rules": {}
}
复制代码

其中 rules 里可以写自定义的规则,自定义的规则优先级最高 想要自己生成自定义规则的话,可以访问网站 https://maximgatilin.github.io/stylelint-config/

stylelint 的编辑器插件,可以使用 stylefmt, 也可以使用 Prettier 格式化

下面是各种编辑器插件的配置

Webstorm 配置

启用 EditorConfig

安装插件 EditorConfig,在设置 Editor -> Code Style 中 勾选 Enable EditorConfig support 创建 .editorconfig 文件,重启编辑器即可

编辑器默认格式化

菜单栏 Code -> Reformat Code 快捷键 Alt + Cmd + L

Prettier 插件格式化

1.安装插件 Prettier Webstorm 内置了 Prettier 插件不需要安装,Phpstorm 等在设置中心里 Plugins插件选项里安装即可

2.全局安装或项目安装 prettier 的 npm 依赖包

npm install prettier --save-dev
复制代码

3.使用 Prettier 格式化文件 Alt + Shift + Cmd + P

设置保存时自动格式化: 手工配置设置里的 Tools -> File Watchers 即可 可以按照官方教程 https://prettier.io/docs/en/webstorm.html

打开设置,搜索 Prettier,然后复制 Prettier package 里的路径

清空搜索栏,打开设置里 Tools -> File Watchers 点击右侧左下角的 ➕ 加号,选择 <custom> 新建自定义模板

然后可以看到(注意点击三角箭头,展开全部的选项)

按上图来配置,并且填入下面内容,注意取消勾选 Auto-save 选项 最后点右下角 ok 结束配置 (使用 Vue 时请再创建一个,文件类型请选择 Vue Template)

$ProjectFileDir$/node_modules/.bin/prettier
--write $FilePathRelativeToProjectRoot$
$FilePathRelativeToProjectRoot$
$ProjectFileDir$
复制代码

Windows 系统必须包含 cmd 后缀,Programs 请填写

$ProjectFileDir$/node_modules/.bin/prettier.cmd
复制代码

重启编辑器,之后只要 Ctrl + S 保存时,就可以自动格式化代码

ESLint 格式化

1.全局或项目内安装 eslint 的 npm 依赖包

npm install eslint --save-dev
复制代码

2.打开编辑器配置,如下图,找到 ESLint 配置项,路径系统会自动检测到,只要勾选 Enable 即可 (如果没有路径,需要重启编辑器,或手动指定 eslint 的 npm 包路径)

3.重启编辑器 4.设置快捷键

建议设为 Ctrl + Alt + F

设置保存时自动格式化: 和 Prettier 配置相同,同样新建一个 File Watcher 即可 参数请填写为

$ProjectFileDir$/node_modules/.bin/eslint
--fix $FilePathRelativeToProjectRoot$
$FilePathRelativeToProjectRoot$
$ProjectFileDir$
复制代码

Windows 系统必须包含 cmd 后缀,Programs 请填写

$ProjectFileDir$/node_modules/.bin/prettier.cmd
复制代码

重启编辑器,之后只要 Ctrl + S 保存时,就可以自动格式化代码

(使用 Vue 时请再创建一个,文件类型请选择 Vue Template)

standard 标准格式化

安装 npm 依赖,注意必须安装到开发依赖里

npm install standard --save-dev
复制代码

设置 JS 代码风格为 standard(Webstorm 默认为 Google 风格),出处点这里 设置的位置见下图,为 Editor -> Code Style -> JavaScript -> Warping and Braces -> Set from... -> Predefined Style -> JavaScript Standard Style

然后使用编辑器默认的格式化功能即可, Alt + Cmd + L

开启代码检查(可选,不设置时不会提示格式错误): 打开上图配置 ESlint 的界面, 勾选 Enable,并且将 ESLint package 选为 standard 的 npm 路径即可

Prettier + ESLint 同时使用

按前文配置 Prettier 和 ESLint,并且都设置保存时自动格式化即可 WebStorm 会自动先运行 Pretter,再运行 ESLint 格式化代码

VSCode 配置

启用 EditorConfig

安装插件 EditorConfig for VS Code, 重启编辑器 创建 .editorconfig 文件

编辑器默认格式化

快捷键 Shift + Alt + F 或者 Cmd + Shift + P 调出命令面板,输入 format,选择 Format Document

Prettier 插件格式化

安装插件 Prettier - Code formatter 依旧使用 Shift + Alt + F

设置自动格式化开关: 安装插件 Formatting Toggle,右下角会出现按钮 Formatting,点击可以一键开关 format 功能 点击时它会自动修改用户设置文件,配置 "editor.formatOnPaste": true, "editor.formatOnSave": true,

如果没有设置开关,保存时自动格式化需要设置: 编辑器中设置中添加配置 "editor.formatOnSave": true, 即可

ESlint 格式化

安装插件 ESLint 双击红色波浪线,会出现黄色小灯泡,点击灯泡,再点击 Fix,就可以完成格式化

或者 输入 Cmd + Shift+P(win: Ctrl+Shift+P) 调出命令面板,输入指令 fix

也可以添加自定义配置, 设置保存时自动格式化:

"eslint.autoFixOnSave": true,
复制代码

standard 标准格式化

安装 npm 依赖,建议安装到开发依赖里

npm install standard --save-dev
复制代码

安装插件JavaScript Standard Style

输入 Cmd + Shift+P(win: Ctrl+Shift+P) 调出命令面板,输入指令 fix 选择 fix all auto-fixable problems 即可

建议添加自定义配置:

"standard.usePackageJson": true, // 基于项目的 package.json 设置中来配置
"standard.autoFixOnSave": true, // 保存时自动格式化
复制代码

Prettier + standard 同时使用

同时配置 Prettier 和 standard,并且设置

"editor.formatOnSave": true,
"standard.autoFixOnSave": true,
复制代码

保存文件时,会先执行 Prettier 格式化,再执行 standard 格式化

Prettier + ESLint 同时使用

按前文同时配置 Prettier 和 standard,并且设置

"editor.formatOnSave": true,
"eslint.autoFixOnSave": true,
复制代码

或者只配置 Prettier,设置为

"editor.formatOnSave": true,
"prettier.eslintIntegration": false, // 使用 Prettier-eslint 功能
复制代码

此时不需要配置 "eslint.autoFixOnSave": true,

如果不需要格式检查提示,不用安装 ESLint 插件

Atom 配置

编辑器默认未集成格式化插件

启用 EditorConfig

安装插件 editorconfig, 重启编辑器 创建 .editorconfig 文件

Prettier 插件格式化

安装插件 prettier-atom, 重启编辑器 使用 Crtl + Alt + F 格式化

设置自动格式化开关: 在插件设置里 Format on Save 选项下,勾选 Show in Status Bar 编辑器底部就会出现保存时自动格式化的开关

ESLint 格式化

安装插件 liner-eslint, 重启编辑器 点击有问题的部分,再点击 fix 即可格式化

设置保存时自动格式化: 在 linter-eslint 插件配置中,勾选

standard 标准格式化

安装 npm 依赖,建议安装到开发依赖里

npm install standard --save-dev
复制代码

格式化 安装插件 standard-formatter 使用快捷键 Ctrl + Alt + F 格式化代码

开启代码检查(可选,不安装时不会提示格式错误): 安装插件 linter-js-standard

Prettier + ESLint 同时使用

按前文同时配置 Prettier + ESLint, 并且都开启保存时自动格式化即可

或者只配置 Prettier,然后在 Prettier 设置里勾选

这时不需要安装 ESLint 格式化插件 standard-formatter 如果不需要格式检查提示,也不用安装格式检查插件 linter-js-standard

Stylelint 编辑器配置

安装 npm 依赖,建议安装到开发依赖里

npm install stylelint --save-dev
复制代码

设置配置文件 .stylelintrc 见上文

安装插件(与上述配置类似,参考插件的介绍文档,不一一赘述了)

Atom:插件 stylefmt 或 vue-stylefmt 或 pretter-atom(设置中勾选Stylelint Integration) VScode: 插件stylefmt WebStorm: 设置 -> Language and FrameWorks -> Stylesheets -> stylelint -> 勾选 enable 并设置stylelint npm 包路径

转载于:https://juejin.im/post/5b5dd3715188251af2570f8e

相关文章:

  • ubuntu12.04下面安装eclipse开发环境
  • Java虚拟机详解03----常用JVM配置参数
  • SQL基础
  • P1338 末日的传说 逆序数对
  • [jobdu]不用加减乘除做加法
  • 一枚前端UI组件库 KUI for Vue
  • Activity的启动模式与flag详解
  • 登录内网账号后,连接不上内网网址
  • c#中获取中文简拼
  • 【例题收藏】◇例题·III◇ 木と整数 / Integers on a Tree
  • window.location.hash属性介绍
  • Maven总结
  • perl常用正则表达式集合
  • Centos7安装搜狗输入法
  • Socket层实现系列 — bind()的实现(二)
  • ES6指北【2】—— 箭头函数
  • 自己简单写的 事件订阅机制
  • bearychat的java client
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • Ruby 2.x 源代码分析:扩展 概述
  • SpingCloudBus整合RabbitMQ
  • 回顾 Swift 多平台移植进度 #2
  • 力扣(LeetCode)22
  • 判断客户端类型,Android,iOS,PC
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 算法之不定期更新(一)(2018-04-12)
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信小程序设置上一页数据
  • 机器人开始自主学习,是人类福祉,还是定时炸弹? ...
  • (+4)2.2UML建模图
  • (02)vite环境变量配置
  • (2)STL算法之元素计数
  • (2022版)一套教程搞定k8s安装到实战 | RBAC
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (MonoGame从入门到放弃-1) MonoGame环境搭建
  • (第一天)包装对象、作用域、创建对象
  • (二)正点原子I.MX6ULL u-boot移植
  • (附源码)php投票系统 毕业设计 121500
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (四)linux文件内容查看
  • (一一四)第九章编程练习
  • (原創) 是否该学PetShop将Model和BLL分开? (.NET) (N-Tier) (PetShop) (OO)
  • (转)jQuery 基础
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转载)CentOS查看系统信息|CentOS查看命令
  • (转载)从 Java 代码到 Java 堆
  • .net Stream篇(六)
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .one4-V-XXXXXXXX勒索病毒数据怎么处理|数据解密恢复
  • [ vulhub漏洞复现篇 ] Django SQL注入漏洞复现 CVE-2021-35042
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • []使用 Tortoise SVN 创建 Externals 外部引用目录