VSCode配置react开发环境的步骤


Posted in Javascript onDecember 27, 2017

vscode 默认配置对于 react 的 JSX 语法不友好,体现在使用自动格式化或者粘贴后默认缩进错误,尽管可以通过改变 language mode 缓解错误,但更改 language mode 后的格式化依然不够理想。

通过搭配使用 ESLint 和 Prettier 插件可以实现在 vscode 中完美支持 JSX 语法。

编辑器安装插件

在 vscode 中需要安装下面插件:

  1. ESLint
  2. Prettier

项目中的配置

配置ESLint

基础配置

项目中安装 babel-eslint , eslint-plugin-jsx-a11y , eslint-plugin-react 依赖:

npm install babel-eslint eslint-plugin-jsx-a11y eslint-plugin-react --save-dev

推荐的 ESLint 配置如下(修改 .eslintrc )

{
 // Use the AirBnB JS styleguide - https://github.com/airbnb/javascript
 "extends": "airbnb",

 // We use 'babel-eslint' mainly for React Native Classes
 "parser": "babel-eslint",
 "ecmaFeatures": {
  "classes": true,
 },

 // jsx相关插件
 "plugins": ["react", "jsx-a11y", "import"]

 // We can add/overwrite custom rules here
 "rules": {
  // React Native has JSX in JS files
  "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }],

  // React Native includes images via require("../images/example.png")
  "global-require": 0
 }
}

需要注意几点:

  1. 如果使用 yarn 安装,需要手动创建 .eslintrc 文件
  2. 如果在使用过程中 eslint 报错,提示缺少依赖,安装相关依赖就好

可能遇到的问题

如果在项目中文件名后缀是 .js 而不是 .jsx ,可能会遇到下面的错误:

[eslint] JSX not allowed in files with extension '.js' (react/jsx-filename-extension)

在 .eslintrc 中添加新的 rules 允许 .js 和 .jsx 后缀就好:

"rules": {
 "react/jsx-filename-extension": [1, { "extensions": [".js", ".jsx"] }]
}

react-native 0.49 及以后版本已经不建议使用 .jsx 为后缀了,参考这个讨论 No .jsx extension?

props validation 错误

[eslint] 'navigation' is missing in props validation (react/prop-types)

检测 props 的类型有助于写出复用组件,最好不要把这个提醒关掉,如果一定要关,添加下面规则:

"rules": {
 "react/prop-types": 0
}

配置Prettier

我们想要的效果是: 配置 Prettier 按照 ESLint 的规则保存文件时自动格式化 JSX 代码 ,步骤如下:

项目中安装 prettier-eslint

npm install prettier-eslint --save-dev

配置 vscode workspace

在 vscode workspace 用户自定义部分添加如下代码:

// Format a file on save. 
// A formatter must be available, 
// the file must not be auto-saved, 
// and editor must not be shutting down.
"editor.formatOnSave": true,
  
// Enable/disable default JavaScript formatter (For Prettier)
"javascript.format.enable": false,
  
// Use 'prettier-eslint' instead of 'prettier'. 
// Other settings will only be fallbacks 
// in case they could not be inferred from eslint rules.
"prettier.eslintIntegration": true,

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
addRule在firefox下的兼容写法
Nov 30 Javascript
获取dom元素那些讨厌的位置封装代码
Jun 23 Javascript
基于jquery的模态div层弹出效果
Aug 21 Javascript
基于JQuery的列表拖动排序实现代码
Oct 01 Javascript
Vue常用指令V-model用法
Mar 08 Javascript
JS的函数调用栈stack size的计算方法
Jun 24 Javascript
微信小程序倒计时功能实例代码
Jul 17 Javascript
vue实现多条件和模糊搜索功能
May 28 Javascript
layer.open 获取不到表单信息的解决方法
Sep 26 Javascript
JS插入排序简单理解与实现方法分析
Nov 25 Javascript
javascript事件循环event loop的简单模型解释与应用分析
Mar 14 Javascript
Nest.js 授权验证的方法示例
Feb 22 Javascript
在vue项目中安装使用Mint-UI的方法
Dec 27 #Javascript
AngularJS集合数据遍历显示的实例
Dec 27 #Javascript
vue.js整合mint-ui里的轮播图实例代码
Dec 27 #Javascript
解决Jstree 选中父节点时被禁用的子节点也会选中的问题
Dec 27 #Javascript
Vue 过滤器filters及基本用法
Dec 26 #Javascript
Javascript防止图片拉伸的自适应处理方法
Dec 26 #Javascript
Vue工程模板文件 webpack打包配置方法
Dec 26 #Javascript
You might like
Ajax+PHP 边学边练 之二 实例
2009/11/24 PHP
超级实用的7个PHP代码片段分享
2012/01/05 PHP
教你php如何实现验证码
2016/01/20 PHP
验证token、回复图文\文本、推送消息的实用微信类php代码
2016/06/28 PHP
PHP批量删除jQuery操作
2017/07/23 PHP
PHP 实现公历日期与农历日期的互转换
2017/09/13 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
2010/05/15 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
关于Javascript中document.cookie的使用
2017/03/08 Javascript
jQuery ajax请求struts action实现异步刷新
2017/04/19 jQuery
bootstrap 设置checkbox部分选中效果
2017/04/20 Javascript
JavaScript如何获取到导航条中HTTP信息
2017/10/10 Javascript
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
10行原生JS实现文字无缝滚动(超简单)
2018/01/02 Javascript
vue-cli webpack2项目打包优化分享
2018/02/07 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
vue观察模式浅析
2018/09/25 Javascript
原生js实现公告滚动效果
2021/01/10 Javascript
JS实现的贪吃蛇游戏完整实例
2019/01/18 Javascript
浅谈Vue.js 关于页面加载完成后执行一个方法的问题
2019/04/01 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
Angular6使用forRoot() 注册单一实例服务问题
2019/08/27 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
Python卸载模块的方法汇总
2016/06/07 Python
Python实现将HTML转成PDF的方法分析
2019/05/04 Python
python脚本实现音频m4a格式转成MP3格式的实例代码
2019/10/09 Python
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
党课主持词大全
2015/06/30 职场文书
导游词之天津盘山
2019/11/01 职场文书
vue-cli4.5.x快速搭建项目
2021/05/30 Vue.js
MySQL8.0的WITH查询详情
2021/08/30 MySQL