You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
1.5 KiB
JavaScript

2 months ago
import autoprefixer from 'autoprefixer';
import postcssResponsiveType from 'postcss-responsive-type';
import pxToViewport from 'postcss-px-to-viewport';
2 months ago
// 使用新的PostCSS 8 API创建自定义的px-to-viewport插件
const customPxToViewportPlugin = (options) => {
return {
postcssPlugin: 'custom-px-to-viewport',
Once(root, { result }) {
const file = result.opts.from;
2 months ago
let viewportWidth = options.defaultViewportWidth || 375; // 设置默认值
2 months ago
if (file?.includes('vant')) {
viewportWidth = 375;
2 months ago
}else{
2 months ago
viewportWidth = 1920;
}
2 months ago
2 months ago
const pxToViewportInstance = pxToViewport({
...options,
viewportWidth: viewportWidth,
});
if (file) {
pxToViewportInstance(root, result);
}
}
};
};
2 months ago
2 months ago
// 定义postcss插件名称
customPxToViewportPlugin.postcss = true;
2 months ago
export default {
plugins: [
autoprefixer(), // 自动添加浏览器前缀
postcssResponsiveType(), // 自动调整文本大小
2 months ago
customPxToViewportPlugin({
2 months ago
defaultViewportWidth:1920,
unitPrecision: 5, // 保留的小数位数
2 months ago
selectorBlackList: [/^\.van/], // 以 .van 开头的类名不转换
2 months ago
minPixelValue: 1, // 小于或等于 1px 不转换
2 months ago
viewportUnit: "vmin", // 转换后的单位
fontViewportUnit: "vmin", // 字体单位
2 months ago
unitToConvert: "px" // 需要转换的单位
2 months ago
}),
],
};