From dfb4dc0202a9f9eb106b4dddb6c0f0205fabaff6 Mon Sep 17 00:00:00 2001 From: Toru Nagashima Date: Sat, 4 May 2019 10:03:19 +0900 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix=20file-extension-in-import?= =?UTF-8?q?=20for=20scoped=20packages=20(fixes=20#160)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/rules/file-extension-in-import.js | 8 +++++++- package.json | 1 + tests/lib/rules/file-extension-in-import.js | 12 ++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/rules/file-extension-in-import.js b/lib/rules/file-extension-in-import.js index defb0904..4c6d4e94 100644 --- a/lib/rules/file-extension-in-import.js +++ b/lib/rules/file-extension-in-import.js @@ -8,6 +8,8 @@ const path = require("path") const fs = require("fs") const getImportExportTargets = require("../util/get-import-export-targets") const getTryExtensions = require("../util/get-try-extensions") +const packageNamePattern = /^(?:@[^/\\]+[/\\])?[^/\\]+$/u +const corePackageOverridePattern = /^(?:assert|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|http2|https|inspector|module|net|os|path|perf_hooks|process|punycode|querystring|readline|repl|stream|string_decoder|sys|timers|tls|trace_events|tty|url|util|v8|vm|worker_threads|zlib)[/\\]$/u /** * Get all file extensions of the files which have the same basename. @@ -69,7 +71,11 @@ module.exports = { function verify({ filePath, name, node }) { // Ignore if it's not resolved to a file or it's a bare module. - if (!filePath || !/[/\\]/u.test(name)) { + if ( + !filePath || + packageNamePattern.test(name) || + corePackageOverridePattern.test(name) + ) { return } diff --git a/package.json b/package.json index cd2e0458..29292550 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "mocha": "^6.1.4", "nyc": "^14.0.0", "opener": "^1.5.1", + "punycode": "^2.1.1", "rimraf": "^2.6.3" }, "scripts": { diff --git a/tests/lib/rules/file-extension-in-import.js b/tests/lib/rules/file-extension-in-import.js index b7ab5a09..45701d26 100644 --- a/tests/lib/rules/file-extension-in-import.js +++ b/tests/lib/rules/file-extension-in-import.js @@ -32,6 +32,18 @@ new RuleTester({ filename: fixture("test.js"), code: "import 'eslint'", }, + { + filename: fixture("test.js"), + code: "import '@typescript-eslint/parser'", + }, + { + filename: fixture("test.js"), + code: "import '@typescript-eslint\\parser'", + }, + { + filename: fixture("test.js"), + code: "import 'punycode/'", + }, { filename: fixture("test.js"), code: "import 'xxx'",