diff --git a/crates/oxc_linter/fixtures/import/vue/main.vue b/crates/oxc_linter/fixtures/import/vue/main.vue new file mode 100644 index 000000000..9258e329f --- /dev/null +++ b/crates/oxc_linter/fixtures/import/vue/main.vue @@ -0,0 +1,3 @@ + diff --git a/crates/oxc_linter/src/rules/import/default.rs b/crates/oxc_linter/src/rules/import/default.rs index 9f2f45827..f371d418e 100644 --- a/crates/oxc_linter/src/rules/import/default.rs +++ b/crates/oxc_linter/src/rules/import/default.rs @@ -1,7 +1,7 @@ use oxc_diagnostics::OxcDiagnostic; use oxc_macros::declare_oxc_lint; -use oxc_span::Span; +use oxc_span::{Span, VALID_EXTENSIONS}; use oxc_syntax::module_record::ImportImportName; use crate::{context::LintContext, rule::Rule}; @@ -51,6 +51,14 @@ impl Rule for Default { if remote_module_record_ref.not_esm { continue; } + if !remote_module_record_ref + .resolved_absolute_path + .extension() + .and_then(|ext| ext.to_str()) + .is_some_and(|ext| VALID_EXTENSIONS.contains(&ext)) + { + continue; + } if remote_module_record_ref.export_default.is_none() && !remote_module_record_ref.exported_bindings.contains_key("default") { @@ -104,6 +112,7 @@ fn test() { // r#"import foobar from "./typescript-export-assign-property""#, // r#"import foobar from "./typescript-export-assign-default-reexport""#, // r#"import React from "./typescript-export-assign-default-namespace"#, + r#"import Foo from "./vue/main.vue""#, ]; let fail = vec![