Remove require-json-extensions rule (#11233)
This commit is contained in:
1 parent
6bd8deae89
commit
b001969b94
4 files changed
-91
No files matched your search
@@ -70,7 +70,6 @@ module.exports = {
|
||||
"prefer-rest-params": "error",
|
||||
"prefer-spread": "error",
|
||||
"prettier-internal-rules/jsx-identifier-case": "error",
|
||||
"prettier-internal-rules/require-json-extensions": "error",
|
||||
"prettier-internal-rules/no-identifier-n": "error",
|
||||
quotes: [
|
||||
"error",
|
||||
|
||||
@@ -16,6 +16,5 @@ module.exports = {
|
||||
"prefer-ast-path-each": require("./prefer-ast-path-each.js"),
|
||||
"prefer-indent-if-break": require("./prefer-indent-if-break.js"),
|
||||
"prefer-is-non-empty-array": require("./prefer-is-non-empty-array.js"),
|
||||
"require-json-extensions": require("./require-json-extensions.js"),
|
||||
},
|
||||
};
|
||||
@@ -1,77 +0,0 @@
|
||||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
const SELECTOR = [
|
||||
"CallExpression",
|
||||
'[callee.type="Identifier"]',
|
||||
'[callee.name="require"]',
|
||||
"[arguments.length=1]",
|
||||
'[arguments.0.type="Literal"]',
|
||||
">",
|
||||
"Literal.arguments",
|
||||
].join("");
|
||||
|
||||
const MESSAGE_ID = "require-json-extensions";
|
||||
|
||||
const resolveModuleInDirectory = (directory, id) => {
|
||||
try {
|
||||
return require.resolve(id, { paths: [directory] });
|
||||
} catch {
|
||||
// noop
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
meta: {
|
||||
type: "suggestion",
|
||||
docs: {
|
||||
url: "https://github.com/prettier/prettier/blob/main/scripts/tools/eslint-plugin-prettier-internal-rules/require-json-extensions.js",
|
||||
},
|
||||
messages: {
|
||||
[MESSAGE_ID]: 'Missing file extension ".json" for "{{id}}".',
|
||||
},
|
||||
fixable: "code",
|
||||
},
|
||||
create(context) {
|
||||
const filename = context.getFilename();
|
||||
const directory = path.dirname(filename);
|
||||
const resolve = (id) => resolveModuleInDirectory(directory, id);
|
||||
|
||||
return {
|
||||
[SELECTOR](node) {
|
||||
const id = node.value;
|
||||
|
||||
if (id.endsWith(".json") || !id.includes("/")) {
|
||||
return;
|
||||
}
|
||||
|
||||
const file = resolve(id);
|
||||
|
||||
if (!file) {
|
||||
return;
|
||||
}
|
||||
|
||||
const extension = path.extname(file);
|
||||
if (extension !== ".json") {
|
||||
return;
|
||||
}
|
||||
|
||||
let fix;
|
||||
if (resolve(`${id}.json`) === file) {
|
||||
fix = (fixer) => {
|
||||
const [start, end] = node.range;
|
||||
return fixer.replaceTextRange([start + 1, end - 1], `${id}.json`);
|
||||
};
|
||||
}
|
||||
|
||||
context.report({
|
||||
node,
|
||||
messageId: MESSAGE_ID,
|
||||
data: { id },
|
||||
fix,
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
};
|
||||
@@ -417,18 +417,6 @@ test("prefer-is-non-empty-array", {
|
||||
],
|
||||
});
|
||||
|
||||
test("require-json-extensions", {
|
||||
valid: ['require("./not-exists")', 'require("./index")'],
|
||||
invalid: [
|
||||
{
|
||||
code: 'require("./package")',
|
||||
filename: __filename,
|
||||
output: 'require("./package.json")',
|
||||
errors: [{ message: 'Missing file extension ".json" for "./package".' }],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
test("no-empty-flat-contents-for-if-break", {
|
||||
valid: [
|
||||
"ifBreak('foo', 'bar')",
|
||||
|
||||
Reference in new issue
Block a user