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 TextBox自动完成条
Jul 22 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
Dec 06 Javascript
js中将URL中的参数提取出来作为对象的实现代码
Aug 16 Javascript
关于jQuery参考实例2.0 用jQuery选择元素
Apr 07 Javascript
Js日期选择器并自动加入到输入框中示例代码
Aug 02 Javascript
jquery实现邮箱自动填充提示功能
Nov 17 Javascript
简单理解js的冒泡排序
Dec 19 Javascript
详谈表单重复提交的三种情况及解决方法
Aug 16 Javascript
JS switch判断 三目运算 while 及 属性操作代码
Sep 03 Javascript
VUE 实现滚动监听 导航栏置顶的方法
Sep 11 Javascript
原生JS实现动态添加新元素、删除元素方法
May 05 Javascript
JavaScript动态添加数据到表单并提交的几种方式
Jun 26 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
基于mysql的论坛(2)
2006/10/09 PHP
php开发工具有哪五款
2015/11/09 PHP
基于PHP后台的Android新闻浏览客户端
2016/05/23 PHP
对YUI扩展的Gird组件 Part-1
2007/03/10 Javascript
javascript显示选择目录对话框的代码
2008/11/10 Javascript
原生js实现改变随意改变div属性style的名称和值的结果
2013/09/26 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
jquery移动节点实例
2015/01/14 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
基于jQuery实现表格的排序
2016/12/02 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
快速使用node.js进行web开发详解
2017/04/26 Javascript
简单谈谈React中的路由系统
2017/07/25 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
2017/08/22 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
Vue项目总结之webpack常规打包优化方案
2019/06/06 Javascript
vue2.x 通过后端接口代理,获取qq音乐api的数据示例
2019/10/30 Javascript
JavaScript forEach中return失效问题解决方案
2020/06/01 Javascript
Vue实现简单的拖拽效果
2020/08/25 Javascript
jquery插件懒加载的示例
2020/10/24 jQuery
微信小程序实现购物车功能
2020/11/18 Javascript
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python3.7 基于 pycryptodome 的AES加密解密、RSA加密解密、加签验签
2019/12/04 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
绢花、人造花和人造花卉:BLOOM
2019/08/07 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
控制工程专业个人求职信
2013/09/25 职场文书
总经理助理职责
2014/02/04 职场文书
初级会计求职信范文
2014/02/15 职场文书
婚前保证书
2014/04/29 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
医护人员继续教育学习心得体会
2016/01/19 职场文书
一文搞懂redux在react中的初步用法
2021/06/09 Javascript
浅谈克隆 JavaScript
2021/11/02 Javascript
解决persistence.xml配置文件修改存放路径的问题
2022/02/24 Java/Android