Skip to content

Commit

Permalink
Chore: use "file:" dependencies for internal rules/config (#11465)
Browse files Browse the repository at this point in the history
This updates the setup of our internal linting rules to use "file:" dependencies within the project, rather than the `eslint-plugin-rulesdir` package. If this works well, it could be a good alternative for packages like `eslint-plugin-rulesdir` and `eslint-plugin-self`.
  • Loading branch information
not-an-aardvark committed Mar 6, 2019
1 parent 0756128 commit f078f9a
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 16 deletions.
25 changes: 13 additions & 12 deletions .eslintrc.js
@@ -1,18 +1,13 @@
"use strict";

const path = require("path");
const rulesDirPlugin = require("eslint-plugin-rulesdir");

rulesDirPlugin.RULES_DIR = path.join(__dirname, "tools/internal-rules");

module.exports = {
root: true,
plugins: [
"eslint-plugin",
"rulesdir"
"internal-rules"
],
extends: [
"./packages/eslint-config-eslint/default.yml",
"eslint",
"plugin:eslint-plugin/recommended"
],
rules: {
Expand All @@ -24,24 +19,30 @@ module.exports = {
"eslint-plugin/require-meta-type": "error",
"eslint-plugin/test-case-property-ordering": "error",
"eslint-plugin/test-case-shorthand-strings": "error",
"rulesdir/multiline-comment-style": "error"
"internal-rules/multiline-comment-style": "error"
},
overrides: [
{
files: ["lib/rules/*", "tools/internal-rules/*"],
excludedFiles: ["tools/internal-rules/index.js"],
rules: {
"rulesdir/no-invalid-meta": "error",
"rulesdir/consistent-docs-description": "error"
"internal-rules/no-invalid-meta": "error",
"internal-rules/consistent-docs-description": "error"

/*
* TODO: enable it when all the rules using meta.messages
* "rulesdir/consistent-meta-messages": "error"
* "internal-rules/consistent-meta-messages": "error"
*/
}
}, {
files: ["tools/internal-rules/*"],
rules: {
"node/no-unpublished-require": "off"
}
}, {
files: ["lib/rules/*"],
rules: {
"rulesdir/consistent-docs-url": "error"
"internal-rules/consistent-docs-url": "error"
}
}, {
files: ["tests/**/*"],
Expand Down
4 changes: 2 additions & 2 deletions package.json
Expand Up @@ -85,11 +85,11 @@
"coveralls": "^3.0.1",
"dateformat": "^3.0.3",
"ejs": "^2.6.1",
"eslint-config-eslint": "file:packages/eslint-config-eslint",
"eslint-plugin-eslint-plugin": "^2.0.1",
"eslint-plugin-internal-rules": "file:tools/internal-rules",
"eslint-plugin-node": "^8.0.0",
"eslint-plugin-rulesdir": "^0.1.0",
"eslint-release": "^1.2.0",
"eslint-rule-composer": "^0.3.0",
"eslump": "^2.0.0",
"esprima": "^4.0.1",
"istanbul": "^0.4.5",
Expand Down
2 changes: 1 addition & 1 deletion tests/lib/code-path-analysis/code-path.js
Expand Up @@ -66,7 +66,7 @@ function getOrderOfTraversing(codePath, options, callback) {
describe("CodePathAnalyzer", () => {
describe(".traverseSegments()", () => {
describe("should traverse segments from the first to the end:", () => {
/* eslint-disable rulesdir/multiline-comment-style */
/* eslint-disable internal-rules/multiline-comment-style */
it("simple", () => {
const codePath = parseCodePaths("foo(); bar(); baz();")[0];
const order = getOrderOfTraversing(codePath);
Expand Down
13 changes: 13 additions & 0 deletions tools/internal-rules/index.js
@@ -0,0 +1,13 @@
"use strict";

const fs = require("fs");
const path = require("path");

module.exports = {
rules: Object.assign(
{},
...fs.readdirSync(__dirname)
.filter(filename => filename.endsWith(".js") && filename !== "index.js")
.map(filename => ({ [filename.replace(/\.js$/u, "")]: require(path.resolve(__dirname, filename)) }))
)
};
2 changes: 1 addition & 1 deletion tools/internal-rules/multiline-comment-style.js
Expand Up @@ -13,7 +13,7 @@ const multilineCommentStyle = require("../../lib/rules/multiline-comment-style")
//------------------------------------------------------------------------------

// The `no-invalid-meta` internal rule has a false positive here.
// eslint-disable-next-line rulesdir/no-invalid-meta
// eslint-disable-next-line internal-rules/no-invalid-meta
module.exports = ruleComposer.filterReports(
multilineCommentStyle,
(problem, metadata) => {
Expand Down
8 changes: 8 additions & 0 deletions tools/internal-rules/package.json
@@ -0,0 +1,8 @@
{
"name": "eslint-plugin-internal-rules",
"version": "0.0.0",
"private": true,
"dependencies": {
"eslint-rule-composer": "^0.3.0"
}
}

0 comments on commit f078f9a

Please sign in to comment.