Parcel v2.4.0

在一月份,我们宣布了 Parcel CSS,这是一个用 Rust 编写的超快的新 CSS 解析器、编译器和压缩器。自那时以来,我们一直在努力改进它,增加了许多新功能并获得更好的性能。今天,我们很高兴地宣布 Parcel CSS 现在是 Parcel v2.4.0 中的默认 CSS 转换器和压缩器!

新功能

#

以下是自我们最初公告以来添加到 Parcel CSS 的一些主要功能的总结。

通过这些功能,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 死代码消除,以及对类静态初始化块的支持。查看更新日志以查看所有改进的完整列表。