vue项目安装使用postcss-pxtorem,在vue.config.js中进行配置,需要注意vue-cli-service的版本。
如若vue-cli-service的版本为4,可直接在vue.config.js中进行配置。
style-resources-loader作用是可以将css或less样式文件自动引入到vue组件中,无需自己手动引入,需要下载style-resources-loader以及vue-cli-plugin-style-resources-loader,在pluginOptions配置项中进行配置。代码如下:
const path = require('path');
module.exports = {
chainWebpack: config => {
config.resolve.alias.set('@src', path.resolve(__dirname, 'src'));
},
css: {
loaderOptions: {
postcss: {
plugins: [
require('postcss-pxtorem')({
rootValue: 14.4, // 换算的基数
// 忽略转换正则匹配项。插件会转化所有的样式的px。比如引入了三方UI,也会被转化。目前我使用 selectorBlackList字段,来过滤
// 如果个别地方不想转化px。可以简单的使用大写的 PX 或 Px 。
// selectorBlackList: [/^\.el/, /^\.am/],
selectorBlackList: ['html'],
propList: ['*'],
exclude: /node_modules/,
replace: true,
mediaQuery: false,
minPixelValue: 0,
}),
],
},
},
},
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: [path.resolve(__dirname, 'src/assets/less/mixins.less')],
},
},
};
如若vue-cli-service的版本为5,则按以上配置无效,postcss-pxtorem相关配置需要在postcss.config.js中设置,正确配置如下:
const { defineConfig } = require('@vue/cli-service');
const path = require('path');
module.exports = defineConfig({
transpileDependencies: true,
chainWebpack: config => {
config.resolve.alias.set('@src', path.resolve(__dirname, 'src'));
},
pluginOptions: {
'style-resources-loader': {
preProcessor: 'less',
patterns: [path.resolve(__dirname, 'src/assets/less/mixins.less')],
},
},
});
postcss.config.js
module.exports = {
plugins: {
'postcss-pxtorem': {
rootValue: 14.4,
propList: ['*'],
selectorBlackList: ['html'],
exclude: /node_modules/,
replace: true,
mediaQuery: false,
minPixelValue: 0,
},
},
};