lkxian888 / postcss-px-to-viewport-8-plugin

解决 postcss-px-to-viewport 控制台输出: postcss.plugin was deprecated. Migration guide:
161 stars 27 forks source link

动态配置viewportWidth #3

Closed 1341526957 closed 2 years ago

1341526957 commented 2 years ago

希望博主可以加多个小改动,业务场景是,比如我导入的antd-mobile/vant,那么他们的px是用375为基准的,而一般设计给的750ui稿,所以希望可以加一下这个提交,这样用户可以直接配置viewportWidth为函数,并通过传的参file指定某些文件的px to vw基准值

lkxian888 commented 2 years ago

希望博主可以加多个小作品,场景是,比如我导入这样的antd-mobile/vant,他们的px是用375为基准的,而一般设计给750ui的,所以希望可以加提交这个稿,这样用户可以为函数配置viewportWidth,并通过传参文件指定直接文件的px到vw基准值

配置用法贴出来

1341526957 commented 2 years ago

这里的三方库以antd-mobile为例子,核心是配置了viewportWidth与exclude取消antd-mobile的编译 plugins: [ [ 'postcss-px-to-viewport-8-plugin', { unitToConvert: 'px', // 需要转换的单位,默认为"px" // 这样的话就只有在antd-mobile里面是375的基数来进行转化 viewportWidth: file => { return file.indexOf('antd-mobile') !== -1 ? 375 : 750 }, unitPrecision: 5, // 单位转换后保留的精度 propList: ['*', '!font-size'], // 能转化为vw的属性列表,!font-size表示font-size后面的单位不会被转换 viewportUnit: 'vw', // 希望使用的视口单位 fontViewportUnit: 'vw', // 字体使用的视口单位 // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 // 下面配置表示类名中含有'keep-px'都不会被转换 selectorBlackList: ['keep-px'], minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: [/node_modules\/^antd-mobile/], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件 include: [/src/], landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape) landscapeUnit: 'vw', // 横屏时使用的单位 landscapeWidth: 1338 // 横屏时使用的视口宽度 } ]

lkxian888 commented 2 years ago

这里的三方库以antd-mobile为例子,核心是配置了viewportWidth与exclude取消antd-mobile的编译 plugins: [ [ 'postcss-px-to-viewport-8-plugin', { unitToConvert: 'px', // 需要转换的单位,默认为"px" // 这样的话就只有在antd-mobile里面是375的基数来进行转化 viewportWidth: file => { return file.indexOf('antd-mobile') !== -1 ? 375 : 750 }, unitPrecision: 5, // 单位转换后保留的精度 propList: ['*', '!font-size'], // 能转化为vw的属性列表,!font-size表示font-size后面的单位不会被转换 viewportUnit: 'vw', // 希望使用的视口单位 fontViewportUnit: 'vw', // 字体使用的视口单位 // 需要忽略的CSS选择器,不会转为视口单位,使用原有的px等单位。 // 下面配置表示类名中含有'keep-px'都不会被转换 selectorBlackList: ['keep-px'], minPixelValue: 1, // 设置最小的转换数值,如果为1的话,只有大于1的值会被转换 mediaQuery: false, // 媒体查询里的单位是否需要转换单位 replace: true, // 是否直接更换属性值,而不添加备用属性 exclude: [/node_modules/^antd-mobile/], // 忽略某些文件夹下的文件或特定文件,例如 'node_modules' 下的文件 include: [/src/], landscape: false, // 是否添加根据 landscapeWidth 生成的媒体查询条件 @media (orientation: landscape) landscapeUnit: 'vw', // 横屏时使用的单位 landscapeWidth: 1338 // 横屏时使用的视口宽度 } ]

看了下你这个配置,”exclude: [/node_modules/^antd-mobile/]“ 把 node_modules 排除了,antd-mobile 就不会转单位了,好像这个正则也不对哦