New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details →
Socket
Book a DemoSign in
Socket

@projectwallace/format-css

Package Overview
Dependencies
Maintainers
1
Versions
42
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@projectwallace/format-css

Fast, small, zero-config library to format or minify CSS with basic rules.

latest
Source
npmnpm
Version
3.0.1
Version published
Weekly downloads
8.6K
-26.29%
Maintainers
1
Weekly downloads
 
Created
Source

format-css

Fast, small, zero-config library to format CSS with basic rules. The design goal is to format CSS in a way that makes it easy to inspect. Bundle size and runtime speed are more important than versatility and extensibility.

Example output

/* TURN THIS: */

@layer base.normalize{@media (dynamic-range:high) or (color-gamut:p3){@supports (color:color(display-p3 0 0 0)){:where(html){--link:color(display-p3 .1 .4 1);--link-visited:color(display-p3 .6 .2 1)}}}}@layer base.normalize{:where(html) :where(dialog){background-color:var(--surface-1)}}

/* INTO THIS: */

@layer base.normalize {
	@media (dynamic-range: high) or (color-gamut: p3) {
		@supports (color: color(display-p3 0 0 0)) {
			:where(html) {
				--link: color(display-p3 .1 .4 1);
				--link-visited: color(display-p3 .6 .2 1);
			}
		}
	}
}

@layer base.normalize {
	:where(html) :where(dialog) {
		background-color: var(--surface-1);
	}
}

/* AND BACK AGAIN! */

Installation

npm install @projectwallace/format-css

Usage

import { format } from '@projectwallace/format-css'

let old_css = '/* Your old CSS here */'
let new_css = format(old_css)

Need more examples?

Formatting rules

  • Every AtRule starts on a new line
  • Every Rule starts on a new line
  • Every Selector starts on a new line
  • A comma is placed after every Selector that’s not the last in the SelectorList
  • Every Block is indented with 1 tab more than the previous indentation level
  • Every Declaration starts on a new line
  • Every Declaration ends with a semicolon (;)
  • An empty line is placed after a Block unless it’s the last in the surrounding Block
  • Multiline tokens like Selectors, Values, etc. are rendered on a single line
  • Unknown syntax is rendered as-is, with multi-line formatting kept intact

Options

Minify CSS

This package also exposes a minifier function since minifying CSS follows many of the same rules as formatting.

import { format, minify } from '@projectwallace/format-css'

let minified = minify('a {}')

// which is an alias for

let formatted_mini = format('a {}', { minify: true })

Tab size

For cases where you cannot control the tab size with CSS there is an option to override the default tabbed indentation with N spaces.

import { format } from '@projectwallace/format-css'

let formatted = format('a { color: red; }', {
	tab_size: 2,
})

CLI

This library also ships a CLI tools that's a small wrapper around the library.

USAGE
  format-css [options] [file...]
  cat styles.css | format-css [options]

OPTIONS
  --minify            Minify the CSS output
  --tab-size=<n>      Use N spaces for indentation instead of tabs
  --help, -h          Show this help

EXAMPLES
  # Format a file
  format-css styles.css

  # Format with 2-space indentation
  format-css styles.css --tab-size=2

  # Minify
  format-css styles.css --minify

  # Via pipe
  cat styles.css | format-css

Keywords

css

FAQs

Package last updated on 28 Mar 2026

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts