Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

postcss-apply

pascalduez647.3kUnlicense0.12.0

PostCSS plugin enabling custom properties sets references

css, apply, postcss, postcss-plugin

readme

postcss-apply

CSS Standard Status npm version Build Status Coverage Status

PostCSS plugin enabling custom property sets references

Refer to postcss-custom-properties for DOMless limitations.

Web Platform status

Spec (editor's draft): https://tabatkins.github.io/specs/css-apply-rule
Browser support: https://www.chromestatus.com/feature/5753701012602880

:warning: The @apply rule and custom property sets most likely won't get any more support from browser vendors as the spec is yet considered deprecated and alternative solutions are being discussed.
Refer to following links for more infos:

Installation

npm install postcss-apply --save-dev

Usage

const fs = require('fs');
const postcss = require('postcss');
const apply = require('postcss-apply');

const input = fs.readFileSync('input.css', 'utf8');

postcss()
  .use(apply)
  .process(input)
  .then((result) => {
    fs.writeFileSync('output.css', result.css);
  });

Examples

In CSS declared sets

/* input */

:root {
  --toolbar-theme: {
    background-color: rebeccapurple;
    color: white;
    border: 1px solid green;
  };
}

.Toolbar {
  @apply --toolbar-theme;
}
/* output */

.Toolbar {
  background-color: rebeccapurple;
  color: white;
  border: 1px solid green;
}

In JS declared sets

const themes = {
  /* Set names won't be transformed, just `--` will be prepended. */
  'toolbar-theme': {
    /* Declaration properties can either be camel or kebab case. */
    backgroundColor: 'rebeccapurple',
    color: 'white',
    border: '1px solid green',
  },
};

[...]
postcss().use(apply({ sets: themes }))
[...]
/* input */

.Toolbar {
  @apply --toolbar-theme;
}
/* output */

.Toolbar {
  background-color: rebeccapurple;
  color: white;
  border: 1px solid green;
}

options

preserve

type: Boolean
default: false
Allows for keeping resolved declarations and @apply rules alongside.

sets

type: { [customPropertyName: string]: Object | string }
default: {}
Allows you to pass an object or string of custom property sets for :root. These definitions will be prepended, in such overridden by the one declared in CSS if they share the same name. The keys are automatically prefixed with the CSS -- to make it easier to share sets in your codebase.

Credits

Licence

postcss-apply is unlicensed.

changelog

postcss-apply change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

unreleased

[0.12.0] - 2019-02-27

Changed

  • Upgrade Babel.
  • Remove babel-runtime dependency.

0.11.0 - 2018-08-11

Changed

  • Upgrade PostCSS to version 7. Breaking Removes support for Node.js versions lower than 6.

0.10.0 - 2018-04-16

Added

  • Remove immediate preceding comments in declarations. Prevent empty :root rules with only comments.

0.9.0 - 2018-03-10

Added

  • Allow both object and string types for the sets option.

0.8.0 - 2017-05-28

Added

  • Support for ancestor rules for @apply declarations. Allows for deep nested declarations like atRules.

0.7.0 - 2017-05-08

Changed

  • PostCSS 6 upgrade.

Fixed

  • Polyfill Object.entries for node versions lower than 7.

0.6.1 - 2017-03-10

Fixed

  • A forgotten console.log in sources.

0.6.0 - 2017-03-08

Added

  • A new sets option. Allows for in JS declared property sets.

0.5.0 - 2017-02-05

Added

  • A new preserve option. Allows for keeping resolved declarations and @apply rules alongside.

0.4.0 - 2016-09-13

Changed

  • Correctly handles property set overrides. #10

0.3.0 - 2016-06-23

Changed

  • Several dependencies updates.
  • Renames in folder structure, files and main class.
  • Switch to ava for unit testing.
  • Switch to nyc for code coverage.
  • Clarify The Readme.

    Added

  • Integration unit tests.

0.2.0 - 2016-03-13

Added

  • Support for parenthesis in mixin calls. Allows integration with Polymer.

0.1.0 - 2015-08-26

  • Initial release.