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