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 相关文章推荐
Javascript 日期处理之时区问题
Oct 08 Javascript
js 格式化时间日期函数小结
Mar 20 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
Feb 04 Javascript
jquery中load方法的用法及注意事项说明
Feb 22 Javascript
JavaScript事件处理的方式(三种)
Apr 26 Javascript
jQuery链式调用与show知识浅析
May 11 Javascript
JCrop+ajaxUpload 图像切割上传的实例代码
Jul 20 Javascript
AngularJS教程 ng-style 指令简单示例
Aug 03 Javascript
详解前端路由实现与react-router使用姿势
Aug 07 Javascript
微信小程序自定义组件
Aug 16 Javascript
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 Javascript
js实现随机div颜色位置 类似满天星效果
Oct 24 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
深入解析phpCB批量转换的代码示例
2013/06/27 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
php获取YouTube视频信息的方法
2015/02/11 PHP
PHP中key和current,next的联合运用实例分析
2016/03/29 PHP
PHP批斗大会之缺失的异常详解
2019/07/09 PHP
PHP实现递归的三种方法
2020/07/04 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
一些相见恨晚的 JavaScript 技巧
2010/04/25 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
2015/12/31 Javascript
javascript运动框架用法实例分析(实现放大与缩小效果)
2016/01/08 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
vue实现ajax滚动下拉加载,同时具有loading效果(推荐)
2017/01/11 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
JS简易计算器实例讲解
2020/06/30 Javascript
vue编写简单的购物车功能
2021/01/08 Vue.js
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python subprocess模块详细解读
2018/01/29 Python
python做反被爬保护的方法
2019/07/01 Python
Python爬虫学习之翻译小程序
2019/07/30 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
Python读取yaml文件的详细教程
2020/07/21 Python
详解python datetime模块
2020/08/17 Python
python 实现非极大值抑制算法(Non-maximum suppression, NMS)
2020/10/15 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
豪华床上用品、床单和浴室必需品:Peacock Alley
2019/09/04 全球购物
大学生旷课检讨书
2014/01/22 职场文书
总结表彰大会主持词
2014/03/26 职场文书
倡议书怎么写?
2019/04/11 职场文书