0.5.1 • Published 7 years ago

postcss-extract-value v0.5.1

Weekly downloads
3
License
MIT
Repository
github
Last release
7 years ago

PostCSS Extract Value Build Status Coverage Status

PostCSS plugin to extract values from css properties and put them into variables.

.foo {
     width: 100px;
     color: #000;
     margin: 10px;
}
.bar {
     color: #000;
     margin: 15px;
}
:root {
    --width-1: 100px;
    --color-1: #000;
    --margin-1: 10px;
    --margin-2: 15px;
}
.foo {
    width: var(--width-1);
    color: var(--color-1);
    margin: var(--margin-1);
}
.bar {
    color: var(--color-1);
    margin: var(--margin-2);
}

Usage

import postcssExtractValue from 'postcss-extract-value';

postcss([
    postcssExtractValue(/* options */),
    // more plugins...
])

Options

filterByProps

Type: array Required: false Default: []

You can add names of css properties and only from this properties will be extracted values.

onlyColor

Type: boolean Required: false Default: false

If you set true, only colors (hex, rgb, hsl, color keywords) will be extracted from values.

scope

Type: string Required: false Default: :root

You can set custom selector, which will contain variables.

variableSyntax

Type: string Required: false Default:

By default it will be used css variables syntax, other available variants less and sass.

templateVariableName

Type: string Required: false Default:

You can set template for variables using special words. See more information below.

Usage templateVariableName

With options filterByProps or without any options by default:

propertyName

Name of css property (width, border, etc.).

postcss([
    postcssExtractValue({
        templateVariableName: 'theme[propertyName]'
    }),
])
.foo {
     width: 100px;
}
:root {
    --theme-width-1: 100px;
}
.foo {
    width: var(--theme-width-1);
}

With options onlyColor:

colorKeyword

Color keyword of the nearest color.

tint

Deviation in the dark or light side from the nearest color. (light\dark)

postcss([
    postcssExtractValue({
         templateVariableName: 'theme[tint][colorKeyword]',
    }),
])
.foo {
    border: 2px solid #cc0000;
    color: #ff0000;
    background-color: rgb(255, 26, 26);
}
:root {
   --theme-dark-red-1: #cc0000;
   --theme-red-1: #ff0000;
   --theme-light-red-1: rgb(255, 26, 26);
}
.foo {
   border: 2px solid var(--theme-dark-red-1);
   color: var(--theme-red-1);
   background-color: var(--theme-light-red-1);
}

Others

selectorName

Name of css selector (className, id, etc.)

postcss([
    postcssExtractValue({
        templateVariableName: 'theme[selectorName]'
    }),
])
.foo {
     width: 100px;
}
:root {
    --theme-foo-1: 100px;
}
.foo {
    width: var(--theme-foo-1);
}

See PostCSS docs for examples for your environment.