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 相关文章推荐
fireworks菜单生成器mm_menu.js在 IE 7.0 显示问题的解决方法
Oct 20 Javascript
javascript实现的基于金山词霸网络翻译的代码
Jan 15 Javascript
鼠标滑在标题上显示图片的JS代码
Nov 19 Javascript
javascript组合使用构造函数模式和原型模式实例
Jun 04 Javascript
基于JavaScript实现窗口拖动效果
Jan 18 Javascript
扩展bootstrap的modal模态框-动态添加modal框-弹出多个modal框
Feb 21 Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
详解angular应用容器化部署
Aug 14 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
Javascript ParentNode和ChildNode接口原理解析
Mar 16 Javascript
如何在现代JavaScript中编写异步任务
Jan 31 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 在线打包_支持子目录
2008/06/28 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
教你如何解密js/vbs/vbscript加密的编码异处理小结
2008/06/25 Javascript
JavaScript 学习笔记(十一)
2010/01/19 Javascript
jquery 学习笔记一
2010/04/07 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
深入解析contentWindow, contentDocument
2013/07/04 Javascript
浅谈jquery回调函数callback的使用
2015/01/30 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件(推荐)
2018/05/01 Javascript
JavaScript 跨域之POST实现方法
2018/05/07 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
vue-cli构建vue项目的步骤详解
2019/01/27 Javascript
JS事件流与事件处理程序实例分析
2019/08/16 Javascript
js实现移动端tab切换时下划线滑动效果
2019/09/08 Javascript
微信小程序实现比较功能的方法汇总(五种方法)
2020/03/07 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
Vue的全局过滤器和私有过滤器的实现
2020/04/20 Javascript
Vue 中使用lodash对事件进行防抖和节流操作
2020/07/26 Javascript
[42:24]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第三场 11.27
2020/12/01 DOTA
Python实现全局变量的两个解决方法
2014/07/03 Python
Python配置文件解析模块ConfigParser使用实例
2015/04/13 Python
Python实现定期检查源目录与备份目录的差异并进行备份功能示例
2019/02/27 Python
python画图把时间作为横坐标的方法
2019/07/07 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
Python文本处理简单易懂方法解析
2019/12/19 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
利用Python实现学生信息管理系统的完整实例
2020/12/30 Python
跑鞋、网球鞋、网球拍、服装及装备:Holabird Sports
2016/09/19 全球购物
Mankind美国/加拿大:英国领先的男士美容护发用品公司
2018/12/05 全球购物
英国PC组件和在线电脑商店:SCAN
2019/04/18 全球购物
四年级学生评语大全
2014/04/21 职场文书
拾金不昧感谢信
2015/01/21 职场文书
2016十一国庆节感言
2015/12/09 职场文书
简单且有用的Python数据分析和机器学习代码
2021/07/02 Python