npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

eslint-plugin-vue-pug

v0.6.2

Published

linting your pug templates in vue single file components

Downloads

42,260

Readme

eslint-plugin-vue-pug

Extends eslint-plugin-vue to support pug templates.

Installation

npm install --save-dev eslint@8 eslint-plugin-vue eslint-plugin-vue-pug

Usage

Most eslint-plugin-vue rules work out of the box with just adding this plugin in your eslint config:

module.exports = {
  extends: [
    'plugin:vue/vue3-recommended',
    'plugin:vue-pug/vue3-recommended'
  ]
}

Limitations

  • pug-lexer seems to convert windows-style CRLF line endings to LF line endings, which may break token position and will give you errors. Make sure to only use LF line endings.

Supported Syntax

This plugin only lints pug syntax that directly corresponds to html syntax. Pug syntax that is not supported includes mixins, js code, loops, if/else, case, include/extends. The linter will just skip those features, which means that tags inside mixins will not be linted. The rule no-pug-control-flow will help you to avoid unsupported pug syntax.

Open Questions

Comment Directive

Do we want own docs for that? Also, pug has no inline comments.

#id and .class shorthands

Shorthands get dropped from attributes list to not affect attribute order. We need to add separate linter rules for those.

  • no-useless-template-attributes checks for class on template, we need to also check shorthands.
  • no-restricted-class needs special handling

brace style

Existing rule fails at fixing and does not replace " quotes with `.

parsing commas in dynamic attribute names

pug splits up attribute names like :[[a,b,][1]]

spaces added by fix

first-attribute-linebreak adds a space between tag( and attr="" in certain scenarios.

attribute separators

Things like max-attributes-per-line would need to include the , in the attribute range for some fixes to work correctly, but this would break attribute-order.

HTML tokens

there are some rules relying on HTML* tokens, like no-multi-spaces.

Splitting low level mustache tokens

template attributes

having both lang and src attributes on template, what does that even do?

HTML rules

Rules for HTML don't apply to pug, but do not seem to interfere with pug templates since they check HTML* tokens, which we don't emit. Should we still disable those rules or leave them on?