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之六 缓存数据功能介绍
Jun 21 Javascript
html中的input标签的checked属性jquery判断代码
Sep 19 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
Mac/Windows下如何安装Node.js
Nov 22 Javascript
IE下支持文本框和密码框placeholder效果的JQuery插件分享
Jan 31 Javascript
javascript实时显示当天日期的方法
May 20 Javascript
javascript实现根据iphone屏幕方向调用不同样式表的方法
Jul 13 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
JavaScript制作简易计算器(不用eval)
Feb 05 Javascript
jQuery动画_动力节点节点Java学院整理
Jul 04 jQuery
JavaScript引用类型RegExp基本用法详解
Aug 09 Javascript
浅析Vue.js中v-bind v-model的使用和区别
Dec 04 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网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
php出现web系统多域名登录失败的解决方法
2014/09/30 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
调试php程序的简单步骤
2019/10/04 PHP
JavaScript 数组运用实现代码
2010/04/13 Javascript
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jQuery Tools tooltip使用说明
2012/07/14 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
微信小程序  modal详解及实例代码
2016/11/09 Javascript
ES6新特性四:变量的解构赋值实例
2017/04/21 Javascript
jQueryeasyui 中如何使用datetimebox 取两个日期间相隔的天数
2017/06/13 jQuery
JavaScript注册时密码强度校验代码
2017/06/30 Javascript
React入门教程之Hello World以及环境搭建详解
2017/07/11 Javascript
Angular4实现动态添加删除表单输入框功能
2017/08/11 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
webstorm中vue语法的支持详解
2018/05/09 Javascript
微信小程序实现弹出层效果
2020/05/26 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
JavaScript基于遍历操作实现对象深拷贝功能示例
2019/03/05 Javascript
vue打包静态资源后显示空白及static文件路径报错的解决
2020/09/02 Javascript
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python中循环后使用list.append()数据被覆盖问题的解决
2018/07/01 Python
python中的插值 scipy-interp的实现代码
2018/07/23 Python
Python数据分析matplotlib设置多个子图的间距方法
2018/08/03 Python
Python基于opencv调用摄像头获取个人图片的实现方法
2019/02/21 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
python实现简单飞行棋
2020/02/06 Python
解决python中import文件夹下面py文件报错问题
2020/06/01 Python
python实现人工蜂群算法
2020/09/18 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
护士辞职信范文
2014/01/19 职场文书
信仰观后感
2015/06/03 职场文书
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫