Research
Security News
Malicious npm Packages Inject SSH Backdoors via Typosquatted Libraries
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
postcss-pxtorempoor
Advanced tools
English | 中文
A plugin for PostCSS that generates rem units from pixel units. This project is based on Hemengke1997/PostCSS- PXTOREM. Thanks to Hemengke1997. The change i made is only to add the ConvertinMediaque parameter to avoid changing the unit in media query.
postcss-pxtorem
options in css.pnpm install postcss postcss-pxtorempoor -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 'postcss-pxtorempoor'
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 , have higher priority than exclude . Same rules as exclude |
disable | boolean | false | disable plugin |
convertUnitOnEnd | ConvertUnit | ConvertUnit[] | false | null | null | convert unit when plugin process end |
convertInMediaQuery | boolean | true | convert unit in media queries |
*
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 'postcss-pxtorempoor'
export default {
plugins: [
pxtorem({
convertUnitOnEnd: {
sourceUnit: /[p|P][x|X]$/,
targetUnit: 'px',
},
}),
],
}
;(function () {
if (typeof window === 'undefined') return
const maxWidth = 1024
const uiWidth = 375
function resize() {
let width = window.innerWidth
if (width > window.screen.width) {
} else {
if (width >= maxWidth) {
width = maxWidth
}
document.documentElement.style.fontSize = `${(width * 16) / uiWidth}px`
}
}
resize()
let timer: NodeJS.Timer
const interval = 1000
window.addEventListener('resize', () => {
clearTimeout(timer)
timer = setTimeout(resize, interval)
})
window.addEventListener('pageshow', (e) => {
if (e.persisted) {
clearTimeout(timer)
timer = setTimeout(resize, interval)
resize()
}
})
})()
@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! 😎
FAQs
✨ A CSS post-processor that converts px to rem.
We found that postcss-pxtorempoor 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.
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.
Security News
MITRE's 2024 CWE Top 25 highlights critical software vulnerabilities like XSS, SQL Injection, and CSRF, reflecting shifts due to a refined ranking methodology.
Security News
In this segment of the Risky Business podcast, Feross Aboukhadijeh and Patrick Gray discuss the challenges of tracking malware discovered in open source softare.