postcss-src
TypeScript icon, indicating that this package has built-in type declarations

1.0.1 • Public • Published

Open source PostCSS polyfill for the new src() function

CSS Values and Units Level 4 defines a src() function. This function works just like the old-school url() function, but without url()'s legacy parsing behavior that prevents the use of additional CSS functions like var() inside it.

This plugin polyfills the src() function by compiling it to an equivalent url(), getting rid of the quotes around the string if possible. For example:

body {
  background: src("http://www.example.com/pinkish.gif");
}

is transformed into:

body {
  background: url(http://www.example.com/pinkish.gif);
}

Although this plugin doesn't natively polyfill CSS variables, it can be used with other polyfills like postcss-custom-properties to make it possible to include build-time variable values in url()s. But make sure you run postcss-src last in your plugin chain!

For example:

/* With both postcss-custom-properties and postcss-src: */

:root {
  --pinkish: "http://www.example.com/pinkish.gif";
}

body {
  background: src(var(--pinkish));
}

is transformed into:

body {
  background: url(http://www.example.com/pinkish.gif);
}

Usage

Add postcss-src to your project:

npm install postcss-custom-properties --save-dev

Use postcss-src as a PostCSS plugin:

const postcss = require('postcss');
const postcssSrc = require('postcss-src);

postcss([
  postcssSrc(/* plugin options */)
]).process(css /*, PostCSS options */);

Options

allowNativeSrc

By default, if postcss-src encounters a src() that it can't safely convert to a url() (such as src(var(--foo))), it will throw an error.

If this is true, it will emit the src() unchanged instead.

postcssSrc({
  allowNativeSrc: true,
});

For example, this throws an error by default but with allowNativeSrc: true it will be left unchanged.

/* Without postcss-custom-properties */

body {
  background: src(var(--foo));
}

Package Sidebar

Install

npm i postcss-src

Weekly Downloads

0

Version

1.0.1

License

Apache-2.0

Unpacked Size

20.4 kB

Total Files

6

Last publish

Collaborators

  • pamelalozano
  • jathak
  • nex3
  • google-wombot