mirror of
https://github.com/swc-project/swc.git
synced 2024-10-05 12:49:21 +03:00
feat(html/minifier): Remove script
type
attribute (#4407)
This commit is contained in:
parent
e0f10f876f
commit
fec0f2e417
@ -47,6 +47,16 @@ static BOOLEAN_ATTRIBUTES: &[&str] = &[
|
||||
"visible",
|
||||
];
|
||||
|
||||
static EXECUTABLE_SCRIPTS_MIME_TYPES: &[&str] = &[
|
||||
"text/javascript",
|
||||
"text/ecmascript",
|
||||
"text/jscript",
|
||||
"application/javascript",
|
||||
"application/x-javascript",
|
||||
"application/ecmascript",
|
||||
"module",
|
||||
];
|
||||
|
||||
struct Minifier {}
|
||||
|
||||
impl Minifier {
|
||||
@ -70,6 +80,23 @@ impl VisitMut for Minifier {
|
||||
n.visit_mut_children_with(self);
|
||||
|
||||
n.children.retain(|child| !matches!(child, Child::Comment(comment) if !self.is_conditional_comment(&comment.data)));
|
||||
|
||||
if n.tag_name.eq_str_ignore_ascii_case("script") {
|
||||
n.attributes.retain(|attribute| {
|
||||
!(attribute.namespace.is_none()
|
||||
&& attribute.prefix.is_none()
|
||||
&& attribute.name.eq_str_ignore_ascii_case("type")
|
||||
&& attribute
|
||||
.value
|
||||
.as_ref()
|
||||
.map(|v| {
|
||||
EXECUTABLE_SCRIPTS_MIME_TYPES
|
||||
.iter()
|
||||
.any(|mime| v.eq_str_ignore_ascii_case(mime))
|
||||
})
|
||||
.unwrap_or_default())
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
fn visit_mut_attribute(&mut self, n: &mut Attribute) {
|
||||
|
@ -0,0 +1,9 @@
|
||||
<script type="text/javascript" defer>
|
||||
console.log();
|
||||
</script>
|
||||
<script type="application/javascript">
|
||||
console.log();
|
||||
</script>
|
||||
<script type="module">
|
||||
console.log();
|
||||
</script>
|
@ -0,0 +1,10 @@
|
||||
<html><head><script defer>
|
||||
console.log();
|
||||
</script>
|
||||
<script>
|
||||
console.log();
|
||||
</script>
|
||||
<script>
|
||||
console.log();
|
||||
</script>
|
||||
</head><body></body></html>
|
Loading…
Reference in New Issue
Block a user