From 4160cf8e009c7c811a1a730e3e8fc745b6381c88 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Sun, 29 May 2022 18:42:59 +0800 Subject: [PATCH 1/3] fix(prefer-import-from-vue): skip side-effect import --- lib/rules/prefer-import-from-vue.js | 3 +++ tests/lib/rules/prefer-import-from-vue.js | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/rules/prefer-import-from-vue.js b/lib/rules/prefer-import-from-vue.js index 2b3fc5b86..6ecf66d1f 100644 --- a/lib/rules/prefer-import-from-vue.js +++ b/lib/rules/prefer-import-from-vue.js @@ -94,6 +94,9 @@ module.exports = { return { ImportDeclaration(node) { + // Skip imports without specifiers (probably relying on side-effects) + if (node.specifiers.length === 0) return + verifySource(node.source, () => { if (SUBSET_AT_VUE_MODULES.has(node.source.value)) { // If the module is a subset of 'vue', we can safely change it to 'vue'. diff --git a/tests/lib/rules/prefer-import-from-vue.js b/tests/lib/rules/prefer-import-from-vue.js index 64854fd87..832df1c69 100644 --- a/tests/lib/rules/prefer-import-from-vue.js +++ b/tests/lib/rules/prefer-import-from-vue.js @@ -22,7 +22,8 @@ tester.run('prefer-import-from-vue', rule, { `export * from 'vue'`, `import Foo from 'foo'`, `import { createApp } from 'vue' - export { createApp }` + export { createApp }`, + `import '@vue/runtime-dom'` ], invalid: [ { From cc4066c0c5d32dddf53d13d490114ea6e83dc9fa Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 30 May 2022 11:53:20 +0800 Subject: [PATCH 2/3] fix: only skip in .d.ts --- lib/rules/prefer-import-from-vue.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/rules/prefer-import-from-vue.js b/lib/rules/prefer-import-from-vue.js index 6ecf66d1f..3d5a1ebac 100644 --- a/lib/rules/prefer-import-from-vue.js +++ b/lib/rules/prefer-import-from-vue.js @@ -94,8 +94,12 @@ module.exports = { return { ImportDeclaration(node) { - // Skip imports without specifiers (probably relying on side-effects) - if (node.specifiers.length === 0) return + // Skip imports without specifiers in `.d.ts` files + if ( + node.specifiers.length === 0 && + context.getFilename().endsWith('.d.ts') + ) + return verifySource(node.source, () => { if (SUBSET_AT_VUE_MODULES.has(node.source.value)) { From 8d18147f52e9119e3739da05872aa91c072bfc95 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Mon, 30 May 2022 17:34:15 +0800 Subject: [PATCH 3/3] Update tests/lib/rules/prefer-import-from-vue.js Co-authored-by: Yosuke Ota --- tests/lib/rules/prefer-import-from-vue.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/lib/rules/prefer-import-from-vue.js b/tests/lib/rules/prefer-import-from-vue.js index 832df1c69..5c87404c2 100644 --- a/tests/lib/rules/prefer-import-from-vue.js +++ b/tests/lib/rules/prefer-import-from-vue.js @@ -23,7 +23,10 @@ tester.run('prefer-import-from-vue', rule, { `import Foo from 'foo'`, `import { createApp } from 'vue' export { createApp }`, - `import '@vue/runtime-dom'` + { + filename: 'test.d.ts', + code: `import '@vue/runtime-dom'` + } ], invalid: [ {