PostCSS Darkmode
Generate darkmode style from css file.
分析 CSS 文件中的颜色,生成「深色模式」的样式。
Installation 安装
$ npm install postcss-darkmode --save-dev
Options 配置
ratio
(number) :亮度调整的百分比,默认为 10assignColors
(array): 颜色替换表,如assignColors: [ ["#D6AB56"], // 保持颜色不变 ["#ff6022", "#f25b20"], // #ff6022 替换为 #f25b20 ]
ignoreExistingDarkMediaQuery
(boolean): 不处理 css 文件中已有的 darmkmode Media Query 中的颜色规则, 默认为 trueignoreFiles
(array): 不需要深色转化的文件,支持正则匹配, 如ignoreFiles: ["aaa.css", /bbb\.css/],
Control Comments 注释控制
/* darkmode: off */
Disable all Darkmode translations for the whole block both before and after the comment. 这个注释所在的 css 规则块都不进行「深色模式」转化/* darkmode: ignore next */
Disable Darkmode translations only for the next property. 只忽略紧跟这个注释后的一条/* darkmode: {#f00} */
Replace the next property with#f00
. 使用#f00
替换紧跟这个注释后的规则的值
如果发现未生效,可能是你所用的打包程序在 postcss-darkmode 处理之前已经将注释过滤掉了,你可以在注释上添加叹号 !
,如 /*! darmkmode: off */
来规避注释被过滤。
Usage 使用
Use webpack
const path = ;const MiniCssExtractPlugin = ; moduleexports = mode: "development" entry: "./src/index.js" output: path: path filename: "index.js" plugins: filename: "css/style.min.css" chunkFilename: "css/[id].min.css" ignoreOrder: false module: rules: test: /\.s[ac]ss$/i use: loader: MiniCssExtractPluginloader options: hmr: processenvNODE_ENV !== "production" "css-loader" "sass-loader" loader: "postcss-loader" options: ident: "postcss" plugins: ratio: 10 // 亮度调整的百分比,默认为 10% assignColors: "#D6AB56" // 保持颜色不变 "#ff6022" "#f25b20" // #ff6022 替换为 #f25b20 "#ff00a0" "#e60090" "#ff3333" "#e62e2e" "#a1a1a1" "rgba(233, 237, 243, 0.1)" "rgba(244, 20, 20, 0.3)" "#E91E63" ignoreExistingDarkMediaQuery: true ignoreFiles: "style.scss" // 不需要深色转化的文件,支持正则匹配 splitFiles: enable: false // 是否将深色样式分离为一个新的css文件 suffix: ".darkmode" //深色css文件名后缀,比如 filename.css 的分离出深色文件: filename.darkmode.css destDir: "../../dist/css" //文件输出目录(相对当前要处理的css文件所在目录) inject: enable: false // 是否不使用媒体查询模式,而通过类名切换深色样式 injectSelector: ".__darkmode__" // 切换深色样式的类名 baseSelector: "html" // 这个类名要添加在哪个选择器上 keepMediaQuery: false // 是否保留 media query 部分的代码,满足某些两种代码都需要的需求 ;
Use gulp
const gulp = ;const postcss = ;const darkmode = ;gulp;
Before:
After:
{}