Clean up @babel/eslint-plugin (#10756)
* Clean up @babel/eslint-plugin * Add directory field to package.json * Update eslint/babel-eslint-plugin/README.md Co-Authored-By: Huáng Jùnliàng <jlhwung@gmail.com> * Incorporate feedback :)
This commit is contained in:
parent
e81bbd69b3
commit
7f732ad019
@ -1,24 +1,22 @@
|
||||
# eslint-plugin-babel
|
||||
# @babel/eslint-plugin
|
||||
|
||||
An `eslint` plugin companion to `babel-eslint`. `babel-eslint` does a great job at adapting `eslint`
|
||||
Companion rules for `@babel/eslint-parser`. `@babel/eslint-parser` does a great job at adapting `eslint`
|
||||
for use with Babel, but it can't change the built in rules to support experimental features.
|
||||
`eslint-plugin-babel` re-implements problematic rules so they do not give false positives or negatives.
|
||||
`@babel/eslint-plugin` re-implements problematic rules so they do not give false positives or negatives.
|
||||
|
||||
> Requires Node 4 or greater
|
||||
> Requires Node 10.9 or greater
|
||||
|
||||
### Install
|
||||
|
||||
```sh
|
||||
npm install eslint-plugin-babel --save-dev
|
||||
npm install @babel/eslint-plugin --save-dev
|
||||
```
|
||||
|
||||
Load the plugin in your `.eslintrc` file:
|
||||
Load the plugin in your `.eslintrc.json` file:
|
||||
|
||||
```json
|
||||
{
|
||||
"plugins": [
|
||||
"babel"
|
||||
]
|
||||
"plugins": ["@babel/eslint-plugin"]
|
||||
}
|
||||
```
|
||||
|
||||
@ -28,14 +26,14 @@ original ones as well!).
|
||||
```json
|
||||
{
|
||||
"rules": {
|
||||
"babel/new-cap": 1,
|
||||
"babel/camelcase": 1,
|
||||
"babel/no-invalid-this": 1,
|
||||
"babel/object-curly-spacing": 1,
|
||||
"babel/quotes": 1,
|
||||
"babel/semi": 1,
|
||||
"babel/no-unused-expressions": 1,
|
||||
"babel/valid-typeof": 1
|
||||
"babel/new-cap": "error",
|
||||
"babel/camelcase": "error",
|
||||
"babel/no-invalid-this": "error",
|
||||
"babel/object-curly-spacing": "error",
|
||||
"babel/quotes": "error",
|
||||
"babel/semi": "error",
|
||||
"babel/no-unused-expressions": "error",
|
||||
"babel/valid-typeof": "error"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@ -1,11 +1,12 @@
|
||||
{
|
||||
"name": "eslint-plugin-babel",
|
||||
"version": "5.3.0",
|
||||
"description": "an eslint rule plugin companion to babel-eslint",
|
||||
"name": "@babel/eslint-plugin",
|
||||
"version": "0.0.0",
|
||||
"description": "Companion rules for @babel/eslint-parser",
|
||||
"main": "lib/index.js",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/babel/eslint-plugin-babel.git"
|
||||
"url": "git+https://github.com/babel/babel.git",
|
||||
"directory": "eslint/babel-eslint-plugin"
|
||||
},
|
||||
"keywords": [
|
||||
"babel",
|
||||
@ -18,12 +19,12 @@
|
||||
"license": "MIT",
|
||||
"private": true,
|
||||
"engines": {
|
||||
"node": ">=4"
|
||||
"node": ">=10.9"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/babel/eslint-plugin-babel/issues"
|
||||
"url": "https://github.com/babel/babel/issues"
|
||||
},
|
||||
"homepage": "https://github.com/babel/eslint-plugin-babel#readme",
|
||||
"homepage": "https://github.com/babel/babel/tree/master/eslint/babel-eslint-plugin",
|
||||
"peerDependencies": {
|
||||
"eslint": ">=4.0.0"
|
||||
},
|
||||
|
||||
@ -1,38 +1,52 @@
|
||||
"use strict";
|
||||
import arrayBracketSpacing from "./rules/array-bracket-spacing";
|
||||
import arrowParens from "./rules/arrow-parens";
|
||||
import flowObjectType from "./rules/flow-object-type";
|
||||
import funcParamsCommaDangle from "./rules/func-params-comma-dangle";
|
||||
import generatorStarSpacing from "./rules/generator-star-spacing";
|
||||
import newCap from "./rules/new-cap";
|
||||
import camelcase from "./rules/camelcase";
|
||||
import noAwaitInLoop from "./rules/no-await-in-loop";
|
||||
import noInvalidThis from "./rules/no-invalid-this";
|
||||
import noUnusedExpressions from "./rules/no-unused-expressions";
|
||||
import objectCurlySpacing from "./rules/object-curly-spacing";
|
||||
import objectShorthand from "./rules/object-shorthand";
|
||||
import quotes from "./rules/quotes";
|
||||
import semi from "./rules/semi";
|
||||
import validTypeof from "./rules/valid-typeof";
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
"array-bracket-spacing": require("./rules/array-bracket-spacing"),
|
||||
"arrow-parens": require("./rules/arrow-parens"),
|
||||
"flow-object-type": require("./rules/flow-object-type"),
|
||||
"func-params-comma-dangle": require("./rules/func-params-comma-dangle"),
|
||||
"generator-star-spacing": require("./rules/generator-star-spacing"),
|
||||
"new-cap": require("./rules/new-cap"),
|
||||
camelcase: require("./rules/camelcase"),
|
||||
"no-await-in-loop": require("./rules/no-await-in-loop"),
|
||||
"no-invalid-this": require("./rules/no-invalid-this"),
|
||||
"no-unused-expressions": require("./rules/no-unused-expressions"),
|
||||
"object-curly-spacing": require("./rules/object-curly-spacing"),
|
||||
"object-shorthand": require("./rules/object-shorthand"),
|
||||
quotes: require("./rules/quotes"),
|
||||
semi: require("./rules/semi"),
|
||||
"valid-typeof": require("./rules/valid-typeof"),
|
||||
"array-bracket-spacing": arrayBracketSpacing,
|
||||
"arrow-parens": arrowParens,
|
||||
"flow-object-type": flowObjectType,
|
||||
"func-params-comma-dangle": funcParamsCommaDangle,
|
||||
"generator-star-spacing": generatorStarSpacing,
|
||||
"new-cap": newCap,
|
||||
camelcase,
|
||||
"no-await-in-loop": noAwaitInLoop,
|
||||
"no-invalid-this": noInvalidThis,
|
||||
"no-unused-expressions": noUnusedExpressions,
|
||||
"object-curly-spacing": objectCurlySpacing,
|
||||
"object-shorthand": objectShorthand,
|
||||
quotes,
|
||||
semi,
|
||||
"valid-typeof": validTypeof,
|
||||
},
|
||||
rulesConfig: {
|
||||
"array-bracket-spacing": 0,
|
||||
"arrow-parens": 0,
|
||||
camelcase: 0,
|
||||
"flow-object-type": 0,
|
||||
"func-params-comma-dangle": 0,
|
||||
"generator-star-spacing": 0,
|
||||
"new-cap": 0,
|
||||
"no-await-in-loop": 0,
|
||||
"no-invalid-this": 0,
|
||||
"no-unused-expressions": 0,
|
||||
"object-curly-spacing": 0,
|
||||
"object-shorthand": 0,
|
||||
quotes: 0,
|
||||
semi: 0,
|
||||
"valid-typeof": 0,
|
||||
"array-bracket-spacing": "off",
|
||||
"arrow-parens": "off",
|
||||
camelcase: "off",
|
||||
"flow-object-type": "off",
|
||||
"func-params-comma-dangle": "off",
|
||||
"generator-star-spacing": "off",
|
||||
"new-cap": "off",
|
||||
"no-await-in-loop": "off",
|
||||
"no-invalid-this": "off",
|
||||
"no-unused-expressions": "off",
|
||||
"object-curly-spacing": "off",
|
||||
"object-shorthand": "off",
|
||||
quotes: "off",
|
||||
semi: "off",
|
||||
"valid-typeof": "off",
|
||||
},
|
||||
};
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -25,9 +24,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -10,9 +9,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
// Rule Definition
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
module.exports = {
|
||||
export default {
|
||||
meta: {
|
||||
docs: {
|
||||
description: "enforce camelcase naming convention",
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -10,9 +9,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
@ -24,7 +23,7 @@ module.exports = {
|
||||
"The babel/flow-object-type rule is deprecated. Please " +
|
||||
"use the flowtype/object-type-delimiter rule instead.\n" +
|
||||
// eslint-disable-next-line
|
||||
"Check out https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-delimiter"
|
||||
"Check out https://github.com/gajus/eslint-plugin-flowtype#eslint-plugin-flowtype-rules-object-type-delimiter",
|
||||
);
|
||||
|
||||
isWarnedForDeprecation = true;
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -10,9 +9,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -22,9 +21,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const newCapRule = new eslint.Linter().getRules().get("new-cap");
|
||||
|
||||
/**
|
||||
@ -13,7 +12,7 @@ function isDecorator(node) {
|
||||
return node.parent.type === "Decorator";
|
||||
}
|
||||
|
||||
module.exports = ruleComposer.filterReports(
|
||||
export default ruleComposer.filterReports(
|
||||
newCapRule,
|
||||
problem => !isDecorator(problem.node),
|
||||
);
|
||||
|
||||
@ -1,14 +1,13 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const noInvalidThisRule = new eslint.Linter().getRules().get("no-invalid-this");
|
||||
|
||||
module.exports = ruleComposer.filterReports(noInvalidThisRule, problem => {
|
||||
export default ruleComposer.filterReports(noInvalidThisRule, problem => {
|
||||
let inClassProperty = false;
|
||||
let node = problem.node;
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const rule = new eslint.Linter().getRules().get("no-unused-expressions");
|
||||
|
||||
/**
|
||||
@ -57,7 +56,7 @@ function isOptionalCallExpression(node) {
|
||||
);
|
||||
}
|
||||
|
||||
module.exports = ruleComposer.filterReports(
|
||||
export default ruleComposer.filterReports(
|
||||
rule,
|
||||
problem =>
|
||||
!isInDoStatement(problem.node) && !isOptionalCallExpression(problem.node),
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const objectCurlySpacingRule = new eslint.Linter()
|
||||
.getRules()
|
||||
.get("object-curly-spacing");
|
||||
|
||||
module.exports = ruleComposer.filterReports(
|
||||
export default ruleComposer.filterReports(
|
||||
objectCurlySpacingRule,
|
||||
(problem, metadata) => {
|
||||
const node = problem.node;
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
|
||||
let isWarnedForDeprecation = false;
|
||||
module.exports = {
|
||||
|
||||
export default {
|
||||
meta: {
|
||||
deprecated: true,
|
||||
schema: [
|
||||
@ -10,9 +9,9 @@ module.exports = {
|
||||
},
|
||||
],
|
||||
},
|
||||
create: function() {
|
||||
create() {
|
||||
return {
|
||||
Program: function() {
|
||||
Program() {
|
||||
if (
|
||||
isWarnedForDeprecation ||
|
||||
/=-(f|-format)=/.test(process.argv.join("="))
|
||||
|
||||
@ -1,10 +1,9 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const quotesRule = new eslint.Linter().getRules().get("quotes");
|
||||
|
||||
module.exports = ruleComposer.filterReports(quotesRule, problem => {
|
||||
export default ruleComposer.filterReports(quotesRule, problem => {
|
||||
// Workaround for JSX fragment syntax until
|
||||
// https://github.com/eslint/eslint/issues/9662
|
||||
if (problem.node.parent.type === "JSXFragment") {
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const semiRule = new eslint.Linter().getRules().get("semi");
|
||||
|
||||
const OPT_OUT_PATTERN = /^[-[(/+`]/; // One of [(/+-`
|
||||
@ -104,7 +103,7 @@ const semiRuleWithClassProperty = ruleComposer.joinReports([
|
||||
}),
|
||||
]);
|
||||
|
||||
module.exports = ruleComposer.filterReports(
|
||||
export default ruleComposer.filterReports(
|
||||
semiRuleWithClassProperty,
|
||||
problem => {
|
||||
const node = problem.node;
|
||||
|
||||
@ -1,9 +1,8 @@
|
||||
"use strict";
|
||||
import ruleComposer from "eslint-rule-composer";
|
||||
import eslint from "eslint";
|
||||
|
||||
const ruleComposer = require("eslint-rule-composer");
|
||||
const eslint = require("eslint");
|
||||
const validTypeOf = new eslint.Linter().getRules().get("valid-typeof");
|
||||
|
||||
module.exports = ruleComposer.filterReports(validTypeOf, problem => {
|
||||
export default ruleComposer.filterReports(validTypeOf, problem => {
|
||||
return problem.node.value !== "bigint";
|
||||
});
|
||||
|
||||
@ -3,14 +3,12 @@
|
||||
* @author Nicholas C. Zakas
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const rule = require("../../src/rules/camelcase"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/camelcase";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Tests
|
||||
|
||||
@ -3,10 +3,10 @@
|
||||
* @author Nicholas C. Zakas
|
||||
*/
|
||||
|
||||
var rule = require("../../src/rules/new-cap"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/new-cap";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
var ruleTester = new RuleTester();
|
||||
const ruleTester = new RuleTester();
|
||||
ruleTester.run("babel/new-cap", rule, {
|
||||
valid: [
|
||||
// Original test cases.
|
||||
|
||||
@ -3,15 +3,13 @@
|
||||
* @author Toru Nagashima
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const cloneDeep = require("lodash.clonedeep");
|
||||
const rule = require("../../src/rules/no-invalid-this"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import cloneDeep from "lodash.clonedeep";
|
||||
import rule from "../../src/rules/no-invalid-this";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Helpers
|
||||
|
||||
@ -3,14 +3,12 @@
|
||||
* @author Michael Ficarra
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const rule = require("../../src/rules/no-unused-expressions"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/no-unused-expressions";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Tests
|
||||
|
||||
@ -6,10 +6,10 @@
|
||||
* @copyright 2015 Mathieu M-Gosselin. All rights reserved.
|
||||
*/
|
||||
|
||||
var rule = require("../../src/rules/object-curly-spacing"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/object-curly-spacing";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
var ruleTester = new RuleTester();
|
||||
const ruleTester = new RuleTester();
|
||||
ruleTester.run("babel/object-curly-spacing", rule, {
|
||||
valid: [
|
||||
// always - object literals
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
var rule = require("../../src/rules/quotes"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/quotes";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
var ruleTester = new RuleTester();
|
||||
const ruleTester = new RuleTester();
|
||||
ruleTester.run("babel/quotes", rule, {
|
||||
valid: [
|
||||
'var foo = "bar";',
|
||||
|
||||
@ -4,14 +4,12 @@
|
||||
* @author Nicholas C. Zakas
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const rule = require("../../src/rules/semi"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/semi";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
const ruleTester = new RuleTester();
|
||||
|
||||
|
||||
@ -3,14 +3,12 @@
|
||||
* @author Ian Christian Myers
|
||||
*/
|
||||
|
||||
"use strict";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Requirements
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
const rule = require("../../src/rules/valid-typeof"),
|
||||
RuleTester = require("../helpers/RuleTester");
|
||||
import rule from "../../src/rules/valid-typeof";
|
||||
import RuleTester from "../helpers/RuleTester";
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Tests
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user