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

@geneticure/util

v0.0.7

Published

Common configurations and helpers for Robin's projects.

Readme

@robertakarobin/util

Common configurations and helpers for Robin's projects.

Installation

For development

cd util
npm i
npx husky install

For usage

cd my_project
npm i -S https://github.com/robertakarobin/util.git
npm i -D eslint @typescript-eslint/eslint-plugin @typescript-eslint/parser stylelint

Then add:

// .vscode/settings.json
// @see ./vscode/settings.json
// TODO3: Extend settings instead, when/if https://github.com/microsoft/vscode/issues/15909 is done
// package.json
{
	"scripts": {
		"lint": "eslint --ext .js,.json,.ts ."
	}
}
// .eslintrc.json
{
	"extends": [
		"./node_modules/@robertakarobin/util/.eslintrc.json"
	]
}
// .stylelintrc.json
{
	"extends": [
		"./node_modules/@robertakarobin/util/.stylelintrc.json"
	]
}

Extending lint rules

This isn't configured to be an ESLint config package (e.g. by naming it eslint-config-*). So, you'll need to extend its .eslintrc.json by using the actual file path:

{
	"extends": [
		"./node_modules/@robertakarobin/util/.eslintrc.json"
	]
}

Note that stylelint.extends appears to work fine regardless of whether you specify ./node_modules.

Style guide

JS

  • Use data- attributes to select items with JS, not CSS classes.

  • Use the global namespace when calling global variables.

    Yes:

    window.location

    No:

    location

CSS

  • Put classes in alphabetical order.

    Otherwise everyone kind-of comes up with their own order. Alphabetical isn't perfect, but at least it's consistent.

  • Use compound classes with a prefix, BEM-style.

    e.g. <div class="hero"><img class="hero__bg"></div>

    This makes the CSS better reflect the structure of the HTML. Start a new compound class when an element is stylistically independent of its parent. Hard rule to enforce; you sorta know it when you see it.

  • Nest compound classes using &.

    For example, instead of:

    .hero {}
    .hero__bg {}

    ...do this:

    .hero {
        &__bg {}
    }

    This cuts down on the amount of CSS we need to write, makes it easier to change class prefixes, makes the CSS better reflect the structure of the HTML, and means you get a nice collapsible tree in VSCode.

  • Prefix scoped/component classes with _.

    This way it's easier to tell in HTML whether a class is global or local.

  • In HTML, put scoped/component classes after global classes

    e.g. <div class="global _local">. Local classes should override global classes.

  • Nest @media inside a compound class's topmost element, if possible.

    No, because if @media isn't alongside the elements it affects, things get disorganized.

    .hero {
        &__bg {}
    }
    
    .footer {}
    
    @media {
        .hero {
            &__bg {}
        }
    }

    The exception is if a @media rule applies the same CSS to multiple elements:

    @media {
        .hero,
        .footer {}
    }

    No, because if @media are inside the most specific selectors you end up with a bunch of disjointed @media all over the place.

    .hero {
        &__bg {
            @media {}
        }
    }

    Yes:

    .hero {
        &__bg {}
    
        @media {
            &__bg{}
        }
    }
    
    .footer {}