PostCSS
PostCSS 是一个使用 JavaScript 转换 CSS 的工具。可以理解成 css 的「后处理器」
- 添加浏览器前缀
- css 语法降级
安装
pnpm add -D postcss postcss-cli
打包:
npx postcss style.css -o dist.css
添加浏览器前缀
pnpm add -D autoprefixer
使用插件:
npx postcss style.css -o dist.css -u autoprefixer
查看哪些属性需要添加前缀:
npx autoprefixer --info
创建postcss.config.js
在项目根目录下创建postcss.config.js
文件,内容如下:
module.exports = {
plugins: [require('autoprefixer')]
};
此时就不需要在命令行添加-u autoprefixer
了
npx postcss style.css -o dist.css
配置脚本命令
在 package.json 中添加脚本命令:
{
"scripts": {
"build": "postcss style.css -o dist.css"
}
}
后续只需要执行pnpm build
即可
支持 css 最新的特性
安装postcss-preset-env预设,支持 css 最新的特性。
pnpm add -D postcss-preset-env
注意:如果用了 postcss-preset-env,就不必使用 autoprefixer
例如使用嵌套语法:
.box {
bgckground: green;
&:hover {
bgckground: red;
}
}
postcss.config.js
const postcssPresetEnv = require('postcss-preset-env');
module.exports = {
plugins: [
postcssPresetEnv({
/* pluginOptions */
})
]
};
配置 stylelint
pnpm add -D stylelint stylelint-config-standard
创建.stylelintrc.json
文件
{
"extends": ["stylelint-config-standard"]
}
然后在postcss.config.js
中使用:
const postcssPresetEnv = require('postcss-preset-env');
module.exports = {
plugins: [
require('stylelint'),
require('autoprefixer'),
postcssPresetEnv({
stage: 0
})
]
};
执行打包命令后,就可以看到一堆警告信息
配置 postcss-pxtorem
https://github.com/cuth/postcss-pxtorem
pnpm add -D postcss-pxtorem
然后在postcss.config.js
中使用:
const postcssPresetEnv = require('postcss-preset-env');
module.exports = {
plugins: [
require('stylelint'),
require('autoprefixer'),
postcssPresetEnv({
stage: 0
}),
require('postcss-pxtorem')
]
};
执行命令后,可以在打包后的 css 文件中看到 px 单位被转为 rem
使用默认设置时,仅针对与字体相关的属性。如果想让其他属性也支持转换,可以配置propList
const postcssPresetEnv = require('postcss-preset-env');
const pxtorem = require('postcss-pxtorem');
module.exports = {
plugins: [
require('stylelint'),
require('autoprefixer'),
postcssPresetEnv({
stage: 0
}),
pxtorem({
propList: ['*']
})
]
};