
Product
Announcing Socket Fix 2.0
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
@minko-fe/postcss-pxtorem
Advanced tools
English | 中文
A plugin for PostCSS that generates rem units from pixel units.
If you don't need the following new features, you can use the official library: postcss-pxtorem
postcss-pxtorem
supported option in style filesnpm install postcss @minko-fe/postcss-pxtorem -D
Pixels are the easiest unit to use (opinion). The only issue with them is that they don't let browsers change the default font size of 16. This script converts every px value to a rem from the properties you choose to allow the browser to set the font size.
// postcss.config.js
import pxtorom from '@minko-fe/postcss-pxtorem'
export default {
plugins: [
pxtorom({
rootValue: 16,
selectorBlackList: ['some-class'],
propList: ['*'],
atRules: ['media'],
// ...
}),
],
}
Name | Type | Default | Description |
---|---|---|---|
rootValue | number | ((input: Input) => number) | 16 | Represents the root element font size or returns the root element font size based on the input parameter |
unitToConvert | string | px | unit to convert, by default, it is px |
unitPrecision | number | 5 | The decimal numbers to allow the REM units to grow to. |
propList | string[] | ['*'] | The properties that can change from px to rem. Refer to: propList |
selectorBlackList | (string | RegExp)[] | [] | The selectors to ignore and leave as px. Refer to: selectorBlackList |
replace | boolean | true | Replaces rules containing rems instead of adding fallbacks. |
atRules | boolean | string[] | false | Allow px to be converted in at-rules. Refer to At-rule |
minPixelValue | number | 0 | Set the minimum pixel value to replace. |
exclude | string | RegExp | ((filePath: string) => boolean) | null | /node_modules/i | The file path to ignore and leave as px. Refer to: exclude |
include | string | RegExp | ((filePath: string) => boolean) | null | null | The file path to convert px to rem, in contrast to exclude , priority lower than exclude . |
disable | boolean | false | disable plugin, used to disable plugin dynamically |
convertUnit | ConvertUnit | ConvertUnit[] | false | false | convert unit when plugin process end |
*
to enable all properties. Example: ['*']
*
at the start or end of a word. (['*position*']
will match background-position-y
)!
to not match a property. Example: ['*', '!letter-spacing']
['*', '!font*']
['body']
will match .body-class
[/^body$/]
will match body
but not .body
'exclude'
will match \project\postcss-pxtorem\exclude\path
/exclude/i
will match \project\postcss-pxtorem\exclude\path
function (file) { return file.includes('exclude') }
/* pxtorem?disable=true */
.rule {
font-size: 15px; // 15px
}
/* pxtorem?rootValue=32 */
.rule {
font-size: 30px; // 0.9375rem
}
The above is just a simple example, you can set any of the options supported by postcss-pxtorem
in the css file
You may have seen that the css comment is very much like the browser url?. That's right. For the specification, just refer to: query-string
/* pxtorem?disable=false&rootValue=32&propList[]=*&replace=false&selectorBlackList[]=/some-class/i */
.rule {
/* pxtorem-disable-next-line */
font-size: 15px; // 15px
}
If you write 15PX
(as long as it's not px
), the plugin also ignores it, because unitToConvert
defaults to px
If you want to use PX
to ignore and want the final unit to be px
, you can:
// postcss.config.js
import pxtorem from '@minko-fe/postcss-pxtorem'
export default {
plugins: [
pxtorem({
convertUnit: {
source: /px$/i,
target: 'px',
},
}),
],
}
import { flexible } from 'modern-flexible'
flexible({
rootValue: 16,
distinctDevice: [
{ isDevice: (w: number) => w < 750, UIWidth: 375, deviceWidthRange: [375, 750] },
{ isDevice: (w: number) => w >= 750, UIWidth: 1920, deviceWidthRange: [1080, 1920] },
],
})
@tcstory/postcss-px-to-viewport
A CSS post-processor that converts px to viewport: postcss-pxtoviewport
If this has helped you, please don't hesitate to give a STAR, thanks! 😎
MIT
FAQs
A postcss plugin that converts px to rem.
The npm package @minko-fe/postcss-pxtorem receives a total of 209 weekly downloads. As such, @minko-fe/postcss-pxtorem popularity was classified as not popular.
We found that @minko-fe/postcss-pxtorem demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket Fix 2.0 brings targeted CVE remediation, smarter upgrade planning, and broader ecosystem support to help developers get to zero alerts.
Security News
Socket CEO Feross Aboukhadijeh joins Risky Business Weekly to unpack recent npm phishing attacks, their limited impact, and the risks if attackers get smarter.
Product
Socket’s new Tier 1 Reachability filters out up to 80% of irrelevant CVEs, so security teams can focus on the vulnerabilities that matter.