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:
Kai Cataldo 2019-11-25 17:15:34 -05:00 committed by Huáng Jùnliàng
parent e81bbd69b3
commit 7f732ad019
26 changed files with 139 additions and 150 deletions

View File

@ -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"
}
}
```

View File

@ -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"
},

View File

@ -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",
},
};

View File

@ -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("="))

View File

@ -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("="))

View File

@ -9,7 +9,7 @@
// Rule Definition
//------------------------------------------------------------------------------
module.exports = {
export default {
meta: {
docs: {
description: "enforce camelcase naming convention",

View File

@ -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;

View File

@ -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("="))

View File

@ -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("="))

View File

@ -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),
);

View File

@ -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("="))

View File

@ -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;

View File

@ -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),

View File

@ -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;

View File

@ -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("="))

View File

@ -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") {

View File

@ -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;

View File

@ -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";
});

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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";',

View File

@ -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();

View File

@ -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