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

@firestitch/lint

v18.0.19

Published

@firestitch/ngx-lint

Downloads

1,708

Readme

Angular HTML Formatting Guide

Basic Elements

Empty Elements

Elements with no content and either no attributes or a single attribute should be on one line:

<custom-element></custom-element>
<button class="primary"></button>

Single-Line Elements

Elements with content but no attributes, or with a single attribute, should be on one line:

<span>Short text</span>
<br>

Elements with Single Attribute

Always keep element and its single attribute on the same line:

<div class="container"></div>
<button (click)="onClick()"></button>
<input type="text">

Multi-Attribute Elements

With Content

When an element has multiple attributes AND content:

  • Opening tag on its own line
  • Attributes indented with 4 spaces/2 indents
  • Each attribute on its own line
  • Content indented with 2 spaces/1 indent
  • Closing tag aligned with opening tag
<div
    class="container"
    [attr]="value"
    (click)="onClick()">
  Some content here
</div>

Without Content

When an element has multiple attributes but NO content:

  • Opening tag on its own line
  • Attributes indented with 2 spaces/1 indent
  • Each attribute on its own line
  • Closing tag on new line, aligned with opening tag
<app-header
  class="main-header"
  [title]="pageTitle"
  (menuClick)="onMenuClick()">
</app-header>

Comments

Comments should be preserved exactly as written in source:

<!-- This comment stays exactly as is -->

<!--
  Multi-line comments
  preserve their
  formatting
-->

Angular Control Flow Syntax

Control flow blocks should be properly indented:

@if (condition) {
  <div>Content</div>
} @else if (otherCondition) {
  <div>Other content</div>
} @else {
  <div>Default content</div>
}

@for (item of items) {
  <div>{{ item }}</div>
}

Interpolation

Interpolation should have consistent spacing:

<div>{{ value }}</div>
<span>Prefix {{ value }} suffix</span>

Nested Elements

Each nesting level adds 2 spaces of indentation(double indents):

<div class="parent">
  <div
      class="child"
      [attr]="value">
    <span>Content</span>
  </div>
</div>

Self-Closing Tags

Self-closing tags should remain self-closing and on one line:

<input type="text">
<input
  type="text"
  name="email">
<br>