npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

postcss-units-to-px

v0.2.0

Published

Convert multiple CSS units to px with PostCSS.

Downloads

1,433

Readme

postcss-units-to-px

将多种 CSS 单位转换为 px 的 PostCSS 插件。默认支持 rememvwvhvminvmaxrpx,并可按需覆盖或扩展规则。

安装

pnpm add postcss-units-to-px postcss

使用

import postcss from 'postcss'
import unitsToPx from 'postcss-units-to-px'

const input = '.rule { margin: 1rem 1vw; }'
const output = postcss(unitsToPx()).process(input).css

配置

类型: Object | Null 默认值:

const defaultOptions = {
  unitMap: {
    rem: 16,
    em: 16,
    vw: 3.75,
    vh: 6.67,
    vmin: 3.75,
    vmax: 6.67,
    rpx: 0.5,
  },
  unitPrecision: 5,
  selectorBlackList: [],
  propList: ['*'],
  replace: true,
  mediaQuery: false,
  minValue: 0,
  exclude: [/node_modules/i],
  disabled: false,
}

unitMap

类型: Record<string, number | (value, context) => number | null | false> | Map<string | RegExp | (unit) => boolean, number | (value, context) => number | null | false> | Array<[string | RegExp | (unit) => boolean, number | (value, context) => number | null | false]>

单位转换规则。数值表示倍率(例如 1rem * 16 = 16px)。函数需要返回最终 px 值。若某个单位规则为 null,则会回退使用全局 transform。若规则为 false,则保持原值,即使存在全局 transform

注意:unitMap 仅在传入普通对象时与默认值合并;使用 MapArray 时不会合并默认值。 对于 Map/Array,规则按顺序匹配,命中第一个即停止。

你可以通过导出的 defaultUnitMap 快速构建带默认值的 Map

import unitsToPx from 'postcss-units-to-px'
import { defaultUnitMap } from 'postcss-units-to-px/defaults'

const unitMap = new Map(Object.entries(defaultUnitMap))
unitMap.set(/^v/, 3.75)
unitMap.set(unit => unit.endsWith('rpx'), false)

postcss(unitsToPx({ unitMap }))

transform

类型: ((value, unit, context) => number) | false

当某个单位未定义规则(或规则为 null)时使用的全局转换函数。设为 false 表示全部单位都不转换。

unitPrecision

类型: number 默认值: 5

输出 px 的小数精度。

minValue

类型: number 默认值: 0

小于该阈值的单位值不会被转换。

propList

类型: (string | RegExp)[]

只处理匹配的属性。支持 '*' 表示全部属性。

selectorBlackList

类型: (string | RegExp)[]

匹配到的选择器将被忽略。

replace

类型: boolean

替换原声明值而不是追加一个新声明。

mediaQuery

类型: boolean

允许在 @media 参数中转换单位。

exclude

类型: (string | RegExp)[] | ((filePath: string) => boolean)

根据文件路径排除处理。

disabled

类型: boolean

禁用插件。

Transform Context

转换函数会接收到如下上下文:

interface TransformContext {
  root: Root
  input: Input
  filePath?: string
  decl?: Declaration
  rule?: Rule
  atRule?: AtRule
  prop?: string
  selector?: string
}

说明

  • 正则会跳过引号字符串、url(...)var(...),避免误替换。
  • 绝对单位(in/cm/mm/pt/pc/q)默认不处理,可自行添加到 unitMap