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 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
Jquery 表格合并的问题分享
Sep 17 Javascript
javascript中获取下个月一号,是星期几
Jun 01 Javascript
jquery更换文章内容与改变字体大小代码
Sep 30 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
Dec 15 Javascript
对象转换为原始值的实现方法
Jun 06 Javascript
AngularJS基础 ng-selected 指令简单示例
Aug 03 Javascript
基于angularjs实现图片放大镜效果
Aug 31 Javascript
vue.js入门教程之绑定class和style样式
Sep 02 Javascript
js实现按座位号抽奖
Apr 05 Javascript
小程序云函数调用API接口的方法
May 17 Javascript
Vue学习之组件用法实例详解
Jan 06 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留言本实例代码
2010/05/09 PHP
YII Framework教程之异常处理详解
2016/03/14 PHP
thinkPHP框架对接支付宝即时到账接口回调操作示例
2016/11/14 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
高性能web开发 如何加载JS,JS应该放在什么位置?
2010/05/14 Javascript
基于Jquery的动态创建DOM元素的代码
2010/12/28 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
jQuery实现带有动画效果的回到顶部和底部代码
2015/11/04 Javascript
Bootstrap教程JS插件弹出框学习笔记分享
2016/05/17 Javascript
浅析JavaScript 箭头函数 generator Date JSON
2016/05/23 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
小程序中设置缓存过期的实现方法
2020/01/14 Javascript
利用python获得时间的实例说明
2013/03/25 Python
使用Python的Tornado框架实现一个一对一聊天的程序
2015/04/25 Python
python虚拟环境virtualenv的使用教程
2017/10/20 Python
Python实现端口检测的方法
2018/07/24 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
python @classmethod 的使用场合详解
2019/08/23 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
如何使用amaze ui的分页样式封装一个通用的JS分页控件
2020/08/21 HTML / CSS
YesStyle美国/全球:购买亚洲时装、美容化妆品和生活百货
2017/01/16 全球购物
加拿大快时尚零售商:Ardene
2018/02/14 全球购物
Michael Kors香港官网:美国奢侈品品牌
2019/12/26 全球购物
《猫》教学反思
2014/02/26 职场文书
热血教师观后感
2015/06/10 职场文书
幼儿园家长心得体会
2016/01/21 职场文书
Python中的pprint模块
2021/11/27 Python
CSS中理解层叠性及权重如何分配
2022/12/24 HTML / CSS
Python find()、rfind()方法及作用
2022/12/24 Python