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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@songkick/stylelint-config-songkick

v1.0.0

Published

Boilerplate configuration for Stylelint CSS linter

Downloads

24

Readme

Songkick stylelint Config

A boilerplate configuration for stylelint, with SCSS syntax linting by stylelint-scss.

This project is currently an experimental WIP. For the most part it follows existing Songkick and some former CrowdSurge CSS patterns. We'll gradually add/remove rules as we work out what does and doesn't work for us.

What will this do?

This linter is designed to enforce syntax and coding style - rather than any specific architectural patterns. It will generally not force you to write your CSS to fit a certain methodology or practice, but will make sure that CSS is written in a way that looks consistent and familiar across projects.

## Installation and Configuration

In your project run:

npm install stylelint stylelint-scss @songkick/stylelint-config-songkick --save-dev

Add a .stylelintrc file to your project which extends this configuration:

{
    "extends": "@songkick/stylelint-config-songkick"
}

Where the linting rules don't suit a certain project, or cause issues when including the linter in an existing codebase, you can also override and add to these rules as required:

{
    "extends": "@songkick/stylelint-config-songkick",
    "rules": {
        "indentation": 2,
        "declaration-no-important": true
    }
}

Full documentation on the stylelint config file can be found here: http://stylelint.io/user-guide/configuration/#the-configuration-object

Enforced CSS Lints

Indentation

  • 4-space soft tabs by default.

Case

  • All lowercase everything;
    • Selectors; types, pseudo-selectors (eg. a, div, :hover)
    • Property names (eg. width, height, margin)
    • @-rules (eg. @media, @keyframe)
    • Function names (eg. scale(0.5))
    • Units (eg. px, em, s)
    • Hex codes (eg. #f80046)
  • Uppercase only where required; eg. URLs, typeface names.

Rule Structure

  • Every rule must be on it's own line. Always include an additional empty line between multi-line rules.
  • Include a space between the final selector and the opening brace of a rule.
  • The closing brace of a multi-line rule must be on it's own line.

Selector Structure

  • Selectors cannot be qualified with an element type. (ie. div.class-name - Note: This excludes attribute selectors).
  • Each selector must be placed on a new line.
  • In descendent selectors only a single space should separate each. No newlines.
  • In multiple selector rules, place the comma at the end of the selector name.

Declaration Structure

  • The colon in a declaration must have a space after, but not before (ie. width: 123px;).
  • When declaring !important, you must place a space before, but never after the bang. (ie. width: 123px !important;).
  • Shorthand properties that override longhand properties will error (eg. Using margin property in a rule after margin-left).
  • Rules with multiple declarations must have each on a new line.
  • Semicolons must be on the same line as their declaration.
  • Always close a declaration with a semicolon - including the last.

@-rules

  • Each rule must be on it's own line.
  • Include a space after the name of the @-rule (ie. @media (min-width ...)).
  • Include a space after the colon of a feature (eg. min-width: 123px).

Functions

  • Include a space after each comma in functions where multiple values occur (eg. skew(30deg, 20deg)).
  • When declaring multiple functions, include a space between each (eg. transform: scale(1.5) rotateX(10deg);).
  • Don't use quotes when declaring URLs (ie. background-image: url(foo.jpg);)

Values

  • Don't use multiple redundant shorthand values (eg. margin: 1px 1px 1px 1px; should be margin: 1px;)

### Units

  • Don't use units on length values which are zero (ie 0px > 0).
  • Units should have no more than 2 decimals of precision (ie. 1.23px).
  • Do use leading zeroes in fractional numbers less than 1 (ie. 0.5px).
  • Don't use trailing zeroes in fractional numbers (eg. 1.50px).

Fonts

  • Use quotes around font names that require it (eg. "Proxima Nova"), not around ones that don't (eg. Arial).

Contributing

Please read the included Contribution Guidelines guide before working on this project.