@csstools/postcss-rewrite-url
v2.1.0
Published
Rewrite url values in CSS
Downloads
296
Readme
PostCSS Rewrite URL
npm install @csstools/postcss-rewrite-url --save-dev
PostCSS Rewrite URL lets you rewrite url values in CSS.
.foo {
background: rewrite-url('foo.png');
}
@font-face {
font-family: "Trickster";
src:
local("Trickster"),
rewrite-url("trickster-COLRv1.otf") format("opentype");
}
/* becomes */
.foo {
background: url("foo.png#modified");
}
@font-face {
font-family: "Trickster";
src:
local("Trickster"),
url("trickster-COLRv1.otf#modified") format("opentype");
}
Usage
Add PostCSS Rewrite URL to your project:
npm install postcss @csstools/postcss-rewrite-url --save-dev
Use it as a PostCSS plugin:
const postcss = require('postcss');
const postcssRewriteURL = require('@csstools/postcss-rewrite-url');
postcss([
postcssRewriteURL(/* pluginOptions */)
]).process(YOUR_CSS /*, processOptions */);
Options
rewriter
Determine how urls are rewritten with the rewriter
callback.
interface ValueToRewrite {
url: string;
urlModifiers: Array<string>;
}
interface RewriteContext {
type: 'declaration-value' | 'at-rule-prelude';
from: string | undefined;
rootFrom: string | undefined;
property?: string;
atRuleName?: string;
}
type Rewriter = (value: ValueToRewrite, context: RewriteContext) => ValueToRewrite | false;
/** postcss-rewrite-url plugin options */
type pluginOptions = {
rewriter: Rewriter;
};
postcssRewriteURL({
rewriter: (value, context) => {
console.log(value); // info about the `rewrite-url()` function itself (e.g. the url and url modifiers)
console.log(context); // context surrounding the `rewrite-url()` function (i.e. where was it found?)
if (value.url === 'ignore-me') {
// return `false` to ignore this url and preserve `rewrite-url()` in the output
return false;
}
// use url modifiers to trigger specific behavior
if (value.urlModifiers.includes('--a-custom-modifier')) {
return {
url: value.url + '#other-modification',
urlModifiers: [], // pass new or existing url modifiers to emit these in the final result
};
}
return {
url: value.url + '#modified',
};
},
})
Syntax
PostCSS Rewrite URL is non-standard and is not part of any official CSS Specification.
rewrite-url()
function
The rewrite-url()
function takes a url string and optional url modifiers and will be transformed to a standard url()
function by a dev tool.
.foo {
background: rewrite-url('foo.png');
}
rewrite-url() = rewrite-url( <string> <url-modifier>* )
Stylelint
Stylelint is able to check for unknown property values. Setting the correct configuration for this rule makes it possible to check even non-standard syntax.
'declaration-property-value-no-unknown': [
true,
{
"typesSyntax": {
"url": "| rewrite-url( <string> <url-modifier>* )"
}
},
],
'function-no-unknown': [
true,
{
"ignoreFunctions": ["rewrite-url"]
}
],