PostCSS 的介绍和使用

介绍

在写 CSS 时,我们可能会用到 Less、Sass 等预处理,但是这些预处理无法解决下面的问题:

  1. 兼容低版本浏览器,对未来的 css 属性进行降级;
  2. 前缀补全,例如添加 --webkit;

这些问题,可以使用 PostCSS 进行处理。类似于 babel,PostCSS 用来保证 CSS 的执行万无一失。

babel 的工作流程:

  1. 将最新的 ts 语法转化成 js 语法
  2. 做一次语法降级

然后再在浏览器中进行执行。

PostCSS 是一个用于处理 CSS 的工具,它采用插件体系,允许开发者通过使用插件来转换、优化和处理 CSS 代码。与传统的预处理器(如 Sass 和 Less)不同,PostCSS 并不是一种新的 CSS 语言,而是通过插件系统扩展了现有的 CSS 语法。

PostCSS 的主要优势之一是灵活性。开发者可以根据项目的需要,选择并配置不同的插件。这使得 PostCSS 成为一个强大的工具,适用于各种不同的项目和需求。

常见的 PostCSS 插件功能有:

  1. 自动添加浏览器前缀: 使得样式在不同浏览器中具有一致的表现。
  2. CSS 变量处理: 允许使用 CSS 变量,并在构建过程中将其转换为实际的值。
  3. 压缩和优化: 移除不必要的空格、注释等,以减小文件大小并提高加载性能。
  4. 使用未来的 CSS 语法: 允许开发者在项目中使用尚未被所有浏览器支持的 CSS 语法,通过插件将其转换为当前浏览器能够理解的语法。

postcss-cli 是一个用于运行 PostCSS 的命令行工具。postcss-cli 提供了一种通过命令行界面来使用 PostCSS 的简便方法。使用 postcss-cli,你可以在命令行中运行 PostCSS,并通过指定配置文件或直接传递选项来配置不同的插件和功能。这使得开发者可以轻松地集成 PostCSS 到他们的构建过程中,从而在构建过程中自动化 CSS 处理。

PostCSS 的工作流程通常涉及以下步骤:

  1. 安装 PostCSS 及相关插件: 通过 npm 或 yarn 安装 PostCSS 以及需要的插件。
  2. 配置 PostCSS:创建一个配置文件(通常是 postcss.config.js)来指定使用的插件和其配置。
  3. 运行 PostCSS:使用命令行工具(如 postcss-cli)或集成到构建工具中,运行 PostCSS 来处理 CSS 文件。
  4. 输出处理后的 CSS: 处理后的 CSS 文件可以用于生产环境中。

总的来说,PostCSS 提供了一种现代化、模块化的方式来处理和增强 CSS,为开发者提供了更大的灵活性和控制权。

使用

安装 postcss-cli 和 postcss:

bash 复制代码
yarn add postcss-cli postcss -D

在 index.css 文件中添加下面的内容,使用 CSS 未来语法中的变量:

css 复制代码
:root {
  --globalColor: lightblue;
}

div {
  background-color: var(--globalColor);
}

使用 postcss 对 index.css 进行编译,命令参数:-o表示(output)输出。

bash 复制代码
npx postcss index.css -o result.css

输出的 result.css 文件内容:

css 复制代码
:root {
  --globalColor: lightblue;
}

div {
  background-color: var(--globalColor);
}
/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSIsImZpbGUiOiJyZXN1bHQuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiOnJvb3Qge1xyXG4gICAgLS1nbG9iYWxDb2xvcjogbGlnaHRibHVlO1xyXG59XHJcblxyXG5kaXYge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZ2xvYmFsQ29sb3IpO1xyXG59Il19 */

此时发现并没有对语法降级。

配置并使用插件

postcss-preset-env为预设环境,他可以帮我们把必要的插件都安装上了,其中包含了:

  • postcss-low-level:语法降级
  • postcss-compiler: 编译插件
  • Autoprefixer: 自动补全

安装 postcss 的插件:postcss-preset-env

csharp 复制代码
yarn add postcss-preset-env -D

PostCSS 的默认配置文件名为:postcss.config.js。创建配置文件 postcss.config.js,并使用 postcss-preset-env插件:

ini 复制代码
const postcssPresetEnv = require('postcss-preset-env');

module.exports = {\
  plugins: [postcssPresetEnv()]
}

再次运行 npx postcss index.css -o result.css对 index.css 文件进行处理,此时 result.css 中的文件内容为:

css 复制代码
:root {
  --globalColor: lightblue;
}

div {
  background-color: lightblue;
  background-color: var(--globalColor);
}

可以发现,已经对语法进行降级了。

另外:PostCSS 中包含 Less 和 Sass 的插件,可以之间使用对应的插件完成 Less 和 Sass 的功能。不过这里两个插件已经不维护了。PostCSS 现在的流程为:先让 Less 和 Sass 处理,然后把处理结果交给 PostCSS 进行处理。所以业内就产生了一个说法:PostCSS 是后处理器,Less 和 Sass 是前处理器。

相关推荐
小爬的老粉丝7 小时前
JavaScript 纯前端预览 WPS:先识别容器,再路由解析器
前端·javascript·wps
计算机魔术师8 小时前
新兴多智能体系统的模式与问题
前端
用户059540174468 小时前
AI Agent 上下文污染踩坑实录:用 pytest + Redis 揪出 3 类记忆串号 bug,排查 6 小时
前端·css
满栀5859 小时前
状态管理:Redux、Vuex、Pinia 核心区别
前端·javascript·typescript
一拳不是超人9 小时前
DeepSeek Harness 为什么敢说"一切皆插件"?拆透 Cordis 引擎的五大核心机制
前端·人工智能·agent
IT_陈寒9 小时前
Python的GIL让我多写了500行代码
前端·人工智能·后端
风骏时光牛马9 小时前
AI智能体能力调度微服务
前端
Eloudy11 小时前
ReAct 原理简介
前端·javascript·人工智能·react.js·agent·gpu
ZJU_统一阿萨姆12 小时前
【DSH】如何将 DeepSeek Harness 嵌入生产环境?万字解构 DeepSeek Agent Harness 的运行机制与安全边界
前端·javascript·安全
用户9210802628612 小时前
4. 前端地图大量点位实时更新优化:后端推增量,前端做 diff
前端