postcss.config.js 4.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. // 为处理vite vant375尺寸 但自身项目750等其他尺寸配置问题有如下两个方案 优点缺点都很明显,具体怎么用,见人见智了
  2. // 1.https://blog.csdn.net/weixin_42998707/article/details/124150578 修改postcss-px-to-viewport插件源码
  3. // 2.https://github.com/vitejs/vite/issues/4653 多个配置,这将导致插件处理两次,文件最后注释处
  4. const path = require('path')
  5. module.exports = () => {
  6. return {
  7. plugins: {
  8. autoprefixer: {
  9. overrideBrowserslist: ['> 1%', 'last 2 versions']
  10. },
  11. 'cnjm-postcss-px-to-viewport': {
  12. unitToConvert: 'px', // 要转化的单位
  13. viewportWidth: 750, // UI设计稿的宽度
  14. unitPrecision: 6, // 转换后的精度,即小数点位数
  15. propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  16. viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
  17. fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
  18. selectorBlackList: ['ignore'], // 指定不转换为视窗单位的类名,
  19. minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  20. mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  21. replace: true, // 是否转换后直接更换属性值
  22. exclude: [], // 设置忽略文件,用正则做目录名匹配
  23. landscape: false, // 是否处理横屏情况
  24. // 如果没有使用其他的尺寸来设计,下面这个方法可以不需要,比如vant是375的
  25. customFun: ({ file }) => {
  26. // 这个自定义的方法是针对处理vant组件下的设计稿为375问题
  27. const designWidth = path.join(file).includes(path.join('node_modules', 'vant')) ? 375 : 750
  28. return designWidth
  29. }
  30. }
  31. }
  32. }
  33. }
  34. // const path = require("path");
  35. // const px2viewport = require("postcss-px-to-viewport");
  36. // const autoprefixer = require("autoprefixer");
  37. // module.exports = () => {
  38. // return {
  39. // plugins: [
  40. // autoprefixer({
  41. // overrideBrowserslist: ["Android 4.1", "iOS 7.1", "Chrome > 31", "ff > 31", "ie >= 8"],
  42. // }),
  43. // px2viewport({
  44. // unitToConvert: "px", // 要转化的单位
  45. // viewportWidth: 375, // UI设计稿的宽度
  46. // unitPrecision: 6, // 转换后的精度,即小数点位数
  47. // propList: ["*"], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  48. // viewportUnit: "vw", // 指定需要转换成的视窗单位,默认vw
  49. // fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位,默认vw
  50. // selectorBlackList: ["ignore"], // 指定不转换为视窗单位的类名,
  51. // minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  52. // mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  53. // replace: true, // 是否转换后直接更换属性值
  54. // exclude: [/^(?!.*node_modules\/vant)/], // 设置忽略文件,用正则做目录名匹配
  55. // landscape: false, // 是否处理横屏情况
  56. // }),
  57. // px2viewport({
  58. // unitToConvert: "px", // 要转化的单位
  59. // viewportWidth: 750, // UI设计稿的宽度
  60. // unitPrecision: 6, // 转换后的精度,即小数点位数
  61. // propList: ["*"], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
  62. // viewportUnit: "vw", // 指定需要转换成的视窗单位,默认vw
  63. // fontViewportUnit: "vw", // 指定字体需要转换成的视窗单位,默认vw
  64. // selectorBlackList: ["ignore"], // 指定不转换为视窗单位的类名,
  65. // minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
  66. // mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
  67. // replace: true, // 是否转换后直接更换属性值
  68. // exclude: [/node_modules\/vant/i], // 设置忽略文件,用正则做目录名匹配
  69. // landscape: false, // 是否处理横屏情况
  70. // }),
  71. // ],
  72. // };
  73. // };