1. postcss-apply
PostCSS plugin enabling custom properties sets references
postcss-apply
Package: postcss-apply
Created by: pascalduez
Last modified: Fri, 24 Jun 2022 09:25:10 GMT
Version: 0.12.0
License: Unlicense
Downloads: 652,576
Repository: https://github.com/pascalduez/postcss-apply

Install

npm install postcss-apply
yarn add postcss-apply

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:

  • https://discourse.wicg.io/t/needed-new-champion-for-css-apply-rule/2012
  • https://github.com/w3c/webcomponents/issues/300#issuecomment-276210974
  • http://www.xanthir.com/b4o00
  • https://github.com/w3c/csswg-drafts/issues/1047

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.

RELATED POST

10 Must-Know Windows Shortcuts That Will Save You Time

10 Must-Know Windows Shortcuts That Will Save You Time

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Arrays vs Linked Lists: Which is Better for Memory Management in Data Structures?

Navigating AWS Networking: Essential Hacks for Smooth Operation

Navigating AWS Networking: Essential Hacks for Smooth Operation

Achieving Stunning Visuals with Unity's Global Illumination

Achieving Stunning Visuals with Unity's Global Illumination

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code

Nim's Hidden Gems: Lesser-known Features for Writing Efficient Code