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

React项目中:VS Code中保存自动格式化JavaScript/TypeScript代码

前提

首先,安装插件:ESLint + Prettier

背景:

eslint在校验出代码格式问题以后,我们每次需要手动执行npm run lint --fix,这样效率太慢了,我希望实现的效果是:我按下ctrl + s,就可以自动格式化代码。 

这就是Prettier,尤其是Prettier - Code formatter的VS Code插件。

了解Prettier

Prettier是一个代码格式化程序(可配置)。ESLint也可以格式化代码,但它主要是提醒我们哪里代码写的不符合规则。

Prettier可以在保存文件时或者手动触发代码的格式化,默认情况下,它配置了通用的代码格式。

将ESLint + Prettier配合使用,来达到我们的格式化代码目的。

ESLint和Prettier的指责

ESLint 和 Prettier的指责划分:

ESLint负责代码风格定义

Prettier负责根据ESLint定义的风格进行自动格式化

这是一对完美的组合。

你需要准备的

  • 你需要有VS Code编辑器
  • 有一个配置了ESLint的项目

使用Prettier

 

使用Prettier最常见的就是在VS Code中安装Prettier - Code formatter的扩展。

安装好扩展可以让我在保存代码的时候就格式化代码,抛弃手动的操作。

下面开始来配置

  1. 首先来安装Prettier - Code formatter VS Code扩展。

  2. 配置Prettier使用,使用command + shift + p (windows为ctrl)快捷键打开命令窗口,输入preferences open settings

选择Open Settings(JSON),在打开的JSON文件末尾加入

// 粘贴时格式化代码
"editor.formatOnPaste": true,
// 保存时格式化代码
"editor.formatOnSave": true,
复制代码

如果有相同的配置就不用去设置了。

接下来配置typescript文件的格式化工具为prettier。如果是JavaScript或者其他类型文件,把[typescript]改成对应的名字即可。

"[typescript]": {
	"editor.defaultFormatter": "esbenp.prettier-vscode"
},
复制代码

然后我们去代码中尝试,修改src/index.ts代码为如下

console.log('hello 向问天')
console.log("hello 向问天")
console.log("hello 向问天")
console.log("hello 向问天")
console.log("hello 向问天")
复制代码

我们COMMAND(Windows为CTRL)+ S保存代码后发现,console的末尾都自动加上的分号。说明prettier配置成功。

console.log("hello 向问天");
console.log("hello 向问天");
console.log("hello 向问天");
console.log("hello 向问天");
console.log("hello 向问天");
复制代码

6. 手动格式化单个文件

有时我们可能不需要保存时格式化,我们就可以手动通过快捷命令去手工格式化。

通过使用command + shift + p (windows为ctrl)快捷键打开命令窗口,输入format将会格式化文件。

mac中更加快速的命令是 shift + option + f 直接格式化当前文件。

最后附上个人的一些vscode配置:对应编辑器中的setting.json

{
  // vscode默认启用了根据文件类型自动设置tabsize的选项
  "editor.detectIndentation": false,
  "editor.codeActionsOnSave": {
    "source.fixAll.eslint": true
  },
  // 重新设定tabsize
  "editor.tabSize": 2,
  "workbench.iconTheme": "vscode-great-icons",
  "workbench.colorTheme": "One Dark Pro",
  "files.associations": {
    "*.cjson": "jsonc",
    "*.wxss": "css",
    "*.wxs": "javascript"
  },
  "emmet.includeLanguages": {
    "wxml": "html"
  },
  "minapp-vscode.disableAutoConfig": true,
  "git.enableSmartCommit": true,
  "terminal.integrated.shell.osx": "/bin/zsh",
  "[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "[typescriptreact]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  "typescript.updateImportsOnFileMove.enabled": "always",
  "window.zoomLevel": 0,
  "[html]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
  },
  // 粘贴时格式化代码
  "editor.formatOnPaste": true,
  // 保存时格式化代码
  "editor.formatOnSave": true
}

 

相关文章:

  • 总结:JS中,表达式和语句的区别
  • React中组件和模块,模块化和组件化的理解
  • ES6:类的基本知识
  • 再议:通用功能页面的组件化编码流程
  • React: 样式模块化
  • React:类式组件
  • React: 深入类中this对象的理解
  • React: state和setState理解
  • React: 函数式组件如何使用props
  • VSCode在代码处显示提交记录
  • 如何去除谷歌的人机身份验证
  • git修改用户名及邮箱
  • git撤销commit 并保存之前的修改
  • git merge和git rebase区别
  • git rebase实战操作
  • 收藏网友的 源程序下载网
  • [分享]iOS开发 - 实现UITableView Plain SectionView和table不停留一起滑动
  • [译] 理解数组在 PHP 内部的实现(给PHP开发者的PHP源码-第四部分)
  • 【Amaple教程】5. 插件
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • java多线程
  • Redis中的lru算法实现
  • vue.js框架原理浅析
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 前端代码风格自动化系列(二)之Commitlint
  • 巧用 TypeScript (一)
  • 如何使用 JavaScript 解析 URL
  • 使用前端开发工具包WijmoJS - 创建自定义DropDownTree控件(包含源代码)
  • 译有关态射的一切
  • 用Visual Studio开发以太坊智能合约
  • ​VRRP 虚拟路由冗余协议(华为)
  • ​如何防止网络攻击?
  • !!Dom4j 学习笔记
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • (003)SlickEdit Unity的补全
  • (09)Hive——CTE 公共表达式
  • (C语言)fread与fwrite详解
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第2节(共同的基类)
  • (libusb) usb口自动刷新
  • (接口自动化)Python3操作MySQL数据库
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转载)(官方)UE4--图像编程----着色器开发
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • .chm格式文件如何阅读
  • .Mobi域名介绍
  • .Net 4.0并行库实用性演练
  • ::前边啥也没有
  • @ModelAttribute 注解
  • [ 手记 ] 关于tomcat开机启动设置问题
  • [ 转载 ] SharePoint 资料
  • [AutoSar]BSW_Com02 PDU详解
  • [BT]BUUCTF刷题第8天(3.26)
  • [BZOJ1008][HNOI2008]越狱
  • [bzoj1912]异象石(set)