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,
        },
    },
};

Logo

前往低代码交流专区

更多推荐