A Typescript - ESLint plugin to warn usage of deprecated React component props

栏目: IT技术 · 发布时间: 4年前

内容简介:Plugin to report usage of deprecated typescriptThis plugin can also be used with VSCode if theThis plugin was created

ESLint-plugin-deprecated-props

Plugin to report usage of deprecated typescript interface properties in React components props. The keyword here is "usage", if the property is not used then the linter does not throw a warning.

VSCode integration

This plugin can also be used with VSCode if the Eslint extension is installed. See below for how to set up that.

Example

interface ComponentProps {
  /**
   * Some prop that is going to be removed in the future
   * @deprecated Use someOtherProp instead
   */
  someProp?: string;

  someOtherProp: string;
}

/**
 * Note that the @deprecated prop is used in the implementation
 * since it should still work. This does not throw a warning per se.
 */
const Component = ({ someProp, someOtherProp }: ComponentProps) => {
  const usedValue = someOtherProp != null ? someOtherProp : someProp;
  return <div>{someProp}</div>;
};

export const Test = () => {
  return (
    <React.Fragment>
      {/* Eslint will complain */}
      <Component someProp="" someOtherProp="" /> 
      {/* Eslint will NOT complain */}
      <Component someOtherProp="" />
    </React.Fragment>
  );
};

Note

This plugin was created specifically for a use case we needed at Drawbotics, and is as such not intended as a generic plugin to report deprecation. If the use case described below is not the same that you are encountering, you can check out any of the following plugins:

Installation

Make sure the project already has eslint installed. Note that this plugin works with @typescript-eslint/parser , so you need to have that installed as well.

$ npm install @drawbotics/eslint-plugin-deprecated-props --save-dev

Configuration

To configure this plugin to work properly, you need to set the following fields in your .eslintrc.js

module.exports = {
  parser: '@typescript-eslint/parser',
  plugins: ['@drawbotics/eslint-plugin-deprecated-props'],
  parserOptions: {
    sourceType: 'module',
    project: 'tsconfig.json', // Path should point to tsconfig.json file, without leading `./` 
  },
  rules: {
    '@drawbotics/deprecated-props/deprecated-props': ['warn'],  // Or 'error'
  },
};

Note that this is simply the most minimal config for the plugin to work, you would normally already have other settings and rules in place for your project, but this is the bare minimum.

Testing

To run the integration tests simply run

$ npm run test

VSCode

Depending on your personal configuration, you can enable vscode to report deprecation usage through the plugin. If you already have the ESLint plugin installed and enabled, the deprecation rules should work automatically.

If you don't like to have the ESLint extension running in VSCode (e.g. because you already have the Typescript parser enabled) then you can do the following:

@drawbotics/eslint-plugin-deprecated-props
"eslint.validate": [
  "typescript",
  "typescriptreact"
],
"eslint.workingDirectories": [{ "mode": "auto" }],
"eslint.options": {
  "useEslintrc": false,
  "rules": {
    "@drawbotics/deprecated-props/deprecated-props": ["warn"],  // OR error
  },
  "parser": "@typescript-eslint/parser",
  "plugins": ["@drawbotics/eslint-plugin-deprecated-props"],
  "parserOptions": {
    "sourceType": "module",
    "project": "tsconfig.json",
  },
},

This way you can have VSCode only report the deprecation warnings, and no other ESLint related rule warning. Note that if your project property in the .eslintrc config points to a tsconfig.json file which is not at the root of the project (e.g. project: settings/configs/tsconfig.json ), in the VSCode config you should mofidy the same field to point to simply tsconfig.json , since the VSCode extension will automatically find the right file.

Todo list

As mentioned above, this plugin was created for a very specific use case. If you would like to use it and/or contribute to make it better, feel free to submit a PR.


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

技术之瞳——阿里巴巴技术笔试心得

技术之瞳——阿里巴巴技术笔试心得

阿里巴巴集团校园招聘笔试项目组 / 电子工业出版社 / 2016-11 / 69

《技术之瞳——阿里巴巴技术笔试心得》由阿里巴巴集团校园招聘笔试项目组所著,收集了阿里历年校招中的精华笔试题,涉 及多个领域。《技术之瞳——阿里巴巴技术笔试心得》中内容大量结合了阿里巴巴的实际工作场景,以例题、解析、习题的形式,引 导读者深入理解技术上的关键点、紧要处,夯实基础,启发思考。《技术之瞳——阿里巴巴技术笔试心得》内容不仅专业、有趣,更 是将理论知识与实践应用结合起来,以场景化的问答娓娓道......一起来看看 《技术之瞳——阿里巴巴技术笔试心得》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换