最近在写移动端项目,就想用lib-flexable,px2rem来进行适配,把px转换成rem可是也用到了第三方UI组件库vux,把这个引入发现一个问题就是vux的组件都缩小了,在网上找不到答案,最后在一个vue开发群里找到了解决的方法,目前的处理方法是将vux组件中px转化为PX,避免被转成remvue
{ name: 'vux-ui' }, { name: 'after-less-parser', fn: function (source) { if (this.resourcePath.replace(/\\/g, '/').indexOf('vux/src/components') > -1) { source = source.replace(/px/g, 'PX') } // 自定义的全局样式大部分不须要转换 if (this.resourcePath.replace(/\\/g, '/').indexOf('App.vue') > -1) { source = source.replace(/px/g, 'PX').replace(/-1PX/g, '-1px') } return source } }, { name: 'style-parser', fn: function (source) { if (this.resourcePath.replace(/\\/g, '/').indexOf('vux/src/components') > -1) { source = source.replace(/px/g, 'PX') } // 避免转换1PX.less文件路径 if (source.indexOf('1PX.less') > -1) { source = source.replace(/1PX.less/g, '1px.less') } return source } }
若是是使用cnpm的 就须要把/vux/components那段 要改为vux/componentswebpack
configureWebpack: config => { require('vux-loader').merge(config, { plugins: [{ name: 'vux-ui' },{ name: 'after-less-parser', fn: function (source) { if (this.resourcePath.replace(/\\/g, '/').indexOf('/vux/src/components') > -1) { source = source.replace(/px/g, 'PX') //资源中有引入1px.less文件的,上面也会将文件名替换成1PX.less,因此要替换回来避免构建报错 source = source.replace(/1PX.less/g,'1px.less'); } // 自定义的全局样式大部分不须要转换 return source } },{ name: 'style-parser', fn: function (source) { if (this.resourcePath.replace(/\\/g, '/').indexOf('/vux/src/components') > -1) { source = source.replace(/px/g, 'PX') source = source.replace(/1PX.less/g,'1px.less'); } return source } }] }) }
** https://github.com/airyland/v... , 此方法是vux做者提供的解决方法git