Parcel v2.4.0
在一月份,我们宣布了 Parcel CSS,这是一个用 Rust 编写的超快的新 CSS 解析器、编译器和压缩器。自那时以来,我们一直在努力改进它,增加了许多新功能并获得更好的性能。今天,我们很高兴地宣布 Parcel CSS 现在是 Parcel v2.4.0 中的默认 CSS 转换器和压缩器!
新功能
#以下是自我们最初公告以来添加到 Parcel CSS 的一些主要功能的总结。
@custom-media
草案语法- 改进了自定义属性的压缩
- 级联层(即
@layer
) - 注册的自定义属性(即
@property
) - CSS 颜色 Level 4,包括
lab()
,以及其他颜色空间,并为旧浏览器提供回退。 - CSS 颜色 Level 5 中的
color-mix()
函数 - 对
mask
、clip-path
和filter
的自动供应商前缀。 - 以及更多!
通过这些功能,Parcel CSS 现在可以替代许多常见的基于 PostCSS 的设置,包括 autoprefixer、postcss-preset-env、postcss-modules 和 cssnano。
升级
#在 Parcel v2.4.0 中,默认的 CSS 转换器和压缩器已更新为使用 Parcel CSS。在大多数项目中,这应该是无缝的。但是,有一些事情需要注意。
PostCSS 仍然完全支持,因此您当前的配置应该仍然可以正常工作。但是,我们已在 Parcel 中添加了警告,以在我们建议更新项目配置以提高构建性能时通知您。
cssnano 配置
#如果您的项目中有 cssnano 配置文件,例如 .cssnanorc
,它将不再默认使用。在构建项目时,您可能会在控制台中看到关于此的警告。您可以删除此配置文件(如果不再需要),或设置 .parcelrc
以继续使用 cssnano。请参阅文档了解更多详情。
autoprefixer 和 postcss-preset-env
#在大多数情况下,Parcel 现在将自动处理供应商前缀和为您的浏览器目标转换 CSS,就像它为 JavaScript 所做的那样。您只需要在 package.json 中设置 browserslist
字段,Parcel 就会处理剩下的事情。
Parcel 还对编译草案语法提供了可选支持,例如嵌套、自定义媒体查询和伪类填充。有关 Parcel 所有 CSS 转换功能的更多信息,请参阅新文档。
如果您之前使用 autoprefixer 和 postcss-preset-env 来处理这些,您可能可以从 PostCSS 配置中删除它们以提高构建性能。如果这些是您唯一使用的 PostCSS 插件,则可以完全删除您的 PostCSS 配置。查看文档了解更多详情。
CSS 模块
#当使用 .module.css
后缀命名时,Parcel 会自动处理 CSS 模块。以前,这是由底层的 postcss-modules 提供支持的,但现在它由 Parcel CSS 处理。
您还可以启用所有 CSS 文件作为 CSS 模块处理。以前,这是通过 PostCSS 配置文件中的顶级 modules
选项完成的。此选项现已移至 package.json 中 @parcel/transformer-css
的配置键。请参阅文档了解更多信息。
严格解析
#Parcel CSS 解析器比 PostCSS 更严格。当选择器、at 规则或声明无效时,它将报错。这很有用,因为它避免了意外发布在浏览器中加载时被忽略的代码。
在依赖关系方面,Parcel CSS 也更加符合规范。如果您在 CSS 自定义属性中有 url()
依赖项,如果您通过相对路径引用文件,可能会看到新的错误。这是模糊的,因为 CSS 规范实际上是根据使用 var()
的位置而不是定义自定义属性的位置来解析这些依赖项。现在,Parcel 要求自定义属性中的 url 使用绝对路径定义。请参阅文档了解详情。
其他变更
#Parcel v2.4.0 还带来了几个其他错误修复和改进,包括升级 SWC 以改进 JavaScript 死代码消除,以及对类静态初始化块的支持。查看更新日志以查看所有改进的完整列表。