htmlhint / HTMLHint

⚙️ The static code analysis tool you need for your HTML
https://htmlhint.com
MIT License
3.06k stars 375 forks source link

Support EJS files/tags #492

Open LightCC opened 3 years ago

LightCC commented 3 years ago

Is your feature request related to a problem? Please describe. HTMLHint appears to work well on *.ejs (EJS - Embedded JavaScript) files for the HTML parts, but the EJS templates trigger the spec-char-escape rule on the <% open and %> close tags for the embedded JS templating.

Describe the solution you'd like In *.ejs files, HTMLHint should recognize the EJS start/stop tags and ignore the spec-char-escape tags at the minimum.

It's possible that everything between the tags should also be ignored, although there aren't many tags in EJS (plan <%, <%= for just variables, etc.) and most of it is just plain javascript.

Ideally, all the EJS tags and the javascript itself would all be linted.

Describe alternatives you've considered I looked for other linters for EJS, at least supported by VS Code, didn't see anything.

I do use .htmlhintrc to disable the spec-char-escape rule:

{
    "spec-char-escape": false
}

but this is a less-than-ideal solution as it disables checking for that rule in all normal HTML code as well.

Additional context In VS Code, this shows up as follows: image

image

Shinigami92 commented 3 years ago

Thank you for your feature request But let me tell you that we are currently working intensively on the core and configuration structure of HTMLHint So it will take some time before we have time to implement such features

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

ashugeo commented 3 years ago

I agree with @LightCC. Issues with ejs here as well.

Netgator commented 3 years ago

I am also encountering the same issues.

aravindvnair99 commented 3 years ago

@thedaviddias @Shinigami92 Why not keep this issue open?

As pointed out by @LightCC, @ashugeo and @Netgator, my VS Code is filled with squiggly lines every time I'm working with EJS.

image

Coming to a solution, we can maybe have a check condition to see if an EJS file is being inspected instead of an HTML file and in which case ignore the following:

<% 'Scriptlet' tag, for control-flow, no output
<%_ 'Whitespace Slurping' Scriptlet tag, strips all whitespace before it
<%= Outputs the value into the template (HTML escaped)
<%- Outputs the unescaped value into the template
<%# Comment tag, no execution, no output
<%% Outputs a literal '<%'
%> Plain ending tag
-%> Trim-mode ('newline slurp') tag, trims following newline
_%> 'Whitespace Slurping' ending tag, removes all whitespace after it

Reference: EJS Tags

reporter123 commented 2 years ago

This issues needs to be reopened due to being closed by the bot.

ghost commented 2 years ago

Really appreciated feature

tolgahanbora commented 1 year ago

Best stupid error ever. How can i fix that ? Core developers how can don't know that ? it's not a rocket science.