Skip to content
Search & replace tokens during the linking stage of ICSS loading
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
src fix: handle all at-rules (#64) May 29, 2019
test fix: handle all at-rules (#64) May 29, 2019
.gitignore Add jest and prettier May 24, 2017
.travis.yml fix: handle cases when properties `undefined` in `replaceSymbols` (#62) May 29, 2019 chore( Add missing license file. May 20, 2018 chore(release): 4.1.0 (#61) Feb 26, 2019

Build Status

ICSS Utils


Governs the way tokens are searched & replaced during the linking stage of ICSS loading.

This is broken into its own module in case the behaviour needs to be replicated in other PostCSS plugins (i.e. CSS Modules Values)

import { replaceSymbols, replaceValueSymbols } from "icss-utils";

replaceSymbols(css, replacements);
replaceValueSymbols(string, replacements);


  • css is the PostCSS tree you're working with
  • replacements is an JS object of symbol: "replacement" pairs, where all occurrences of symbol are replaced with replacement.

A symbol is a string of alphanumeric, - or _ characters. A replacement can be any string. They are replaced in the following places:

  • In the value of a declaration, i.e. color: my_symbol; or box-shadow: 0 0 blur spread shadow-color
  • In a media expression i.e. @media small {} or @media screen and not-large {}

extractICSS(css, removeRules = true)

Extracts and remove (if removeRules is equal true) from PostCSS tree :import and :export statements.

import postcss from "postcss";
import { extractICSS } from "icss-utils";

const css = postcss.parse(`
  :import(colors) {
    a: b;
  :export {
    c: d;

    icssImports: {
      colors: {
        a: 'b'
    icssExports: {
      c: 'd'

createICSSRules(icssImports, icssExports)

Converts icss imports and exports definitions to postcss ast

    colors: {
      a: "b"
    c: "d"



Glen Maddern, Bogdan Chadkin and Evilebottnawi 2015-present.

You can’t perform that action at this time.