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

ocss

v0.0.3

Published

a CSS preprocessor that restricts you to use best practices

Downloads

5

Readme

OCSS (Object CSS)

A CSS preprocessor that restricts you to use best practices. Its goal is to make it easy to do the right thing and hard to do the wrong thing.

OCSS is intended for large scale web products, but it can also help to keep clean CSS in smaller projects. Its philosophy is to build pages/views out of multiple CSS objects that are independent of each other.

This repository is for the command line interface (CLI) of the OCSS parser. The parsing and stringifiing logic plus the live editor are inside the ocss-parser repository.

What if

  • classes are the default?
  • nesting compiles to BEM?
  • IDs and !important would throw an error?
  • objects can’t be overwritten outside of theirs files?
  • the compiler throws an error if you already have an object with the same name?
  • nesting deeper than 3 levels would throw an error?
  • tags have to live inside of one single file?
  • nesting objects is not possible?
  • modifiers can only be added to objects (not elements of an object)?
  • there are files that define the relationship between two objects?
  • renaming an object is as simple as renaming a file?
  • prefixing objects is as simple as putting them in a folder?
  • the preprocessor could generate a documentation of all objects?
  • rules can be easily added via plugins?

FAQ

  • Why disallowing IDs?
    • They prevent reuse and have no advantage to classes.
  • Why preventing tags in every file?
    • Tags should only be used as a general baseline as it’s easy to overwrite other styles using them. (can only be included in tags.css)
  • Why shouldn’t you add modifiers to element of an object?
    • If an element is worth to have a modifier, it has state and should therefore be an object.
  • Why shouldn’t you nest objects?
    • Nesting objects creates a direct relationship between components. This reduces reusability and adds dependencies inside your style system. Instead of changing properties of another object, add modifiers to it and to apply changes depending on state.
  • Why can’t I use dashes?
    • Dashes are used by the compiler to create scopes. You can use underscores instead.
  • Why shouldn’t I use !important?
    • It’s the start of most specificity wars.
  • Why can’t I have one object spread across different files?
    • One file for each object adheres to the single source of truth principle. This allows you to easily see all the styles related to one object.