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 相关文章推荐
jQuery 操作XML入门
Dec 25 Javascript
基于jQuery的仿flash的广告轮播代码
Nov 04 Javascript
推荐20家国外的脚本下载网站
Apr 28 Javascript
JavaScript实现统计文本框Textarea字数增强用户体验
Dec 21 Javascript
JS实现闪动的title消息提醒效果
Jun 20 Javascript
js基于setTimeout与setInterval实现多线程
Jun 17 Javascript
js canvas实现擦除动画
Jul 16 Javascript
浅析JavaScript中作用域和作用域链
Dec 06 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
Nov 12 Javascript
微信小程序进入广告实现代码实例
Sep 19 Javascript
原生js实现五子棋游戏
May 28 Javascript
VsCode里的Vue模板的实现
Aug 12 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
使用php判断网页是否gzip压缩
2013/06/25 PHP
ThinkPHP后台首页index使用frameset时的注意事项分析
2014/08/22 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
WIN8.1下搭建PHP5.6环境
2015/04/29 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
最近项目写了一些js,水平有待提高
2009/01/31 Javascript
jqGrid随窗口大小变化自适应大小的示例代码
2013/12/28 Javascript
修复bash漏洞的shell脚本分享
2014/12/31 Javascript
使用js画图之饼图
2015/01/12 Javascript
Bootstrap Fileinput文件上传组件用法详解
2016/05/10 Javascript
JavaScript事件详细讲解
2016/06/27 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
Node.js使用Express创建Web项目详细教程
2017/03/31 Javascript
详解axios在vue中的简单配置与使用
2017/05/10 Javascript
XMLHttpRequest对象_Ajax异步请求重点(推荐)
2017/09/28 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
Vue.js实现的购物车功能详解
2019/01/27 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
vue 集成 vis-network 实现网络拓扑图的方法
2019/08/07 Javascript
js常用方法、检查是否有特殊字符串、倒序截取字符串操作完整示例
2020/01/26 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
创业计划书如何编写
2014/02/06 职场文书
加多宝凉茶广告词
2014/03/18 职场文书
表彰大会主持词
2014/03/26 职场文书
10的分与合教学反思
2014/04/30 职场文书
竞聘上岗演讲稿
2014/05/16 职场文书
新农村建设标语
2014/06/24 职场文书
80后婚前协议书范本
2014/10/24 职场文书
2014年银行工作总结范文
2014/11/12 职场文书
在职人员跳槽求职信
2015/03/20 职场文书
检举信的写法
2019/04/10 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang