TypechoJoeTheme

Dcr163的博客

统计

VUE安装 postcss-px-to-viewport,将px单位转换为视口单位的 (vw, vh, vmin, vmax)

2022-05-08
/
0 评论
/
3,095 阅读
/
正在检测是否收录...
05/08

VUE安装 postcss-px-to-viewport,将px单位转换为视口单位的 (vw, vh, vmin, vmax)

先安装 postcss,直接 npm install postcss --save-dev

安装 postcss-px-to-viewport 这里,使用github上的版本,因为可以指定目录或文件才进行转换

// 需要使用include属性:
npm i https://github.com/evrone/postcss-px-to-viewport --save-dev
// 不需要使用include属性:
npm install postcss-px-to-viewport --save-dev

npm安装报错情况

...
npm ERR! error: RPC failed; curl 28 OpenSSL SSL_read: Connection was reset, errno 10054
npm ERR! fatal: expected flush after ref listing
...

可以尝试用下面的两个设置解决

git config --global http.sslverify 'false'
git config --global url.'https://'.insteadOf git://

安装github报错

PS E:\YzWork\> npm i https://github.com/evrone/postcss-px-to-viewport --save-dev
npm ERR! Error while executing:
npm ERR! e:\Program Files\Git\cmd\git.EXE ls-remote -h -t https://github.com/evrone/postcss-px-to-viewport.git
npm ERR!
npm ERR! fatal: remote error:
npm ERR!   The unauthenticated git protocol on port 9418 is no longer supported.
npm ERR! Please see https://github.blog/2021-09-01-improving-git-protocol-security-github/ for more information.
npm ERR!
npm ERR! exited with error code: 128

可以用下面的npm包来代替,支持 include

npm install postcss-px-to-viewport-update --save-dev

在项目中配置信息

普通vue配置

​ 在根目录下建js文件 postcss.config.js,官方的地址说明:https://github.com/evrone/postcss-px-to-viewport/blob/master/README_CN.md

​ 给出个建议配置:

const pxToViewport = require('postcss-px-to-viewport')
module.exports = {
    plugins: [
        pxToViewport({
            unitToConvert: 'px', // 要转化的单位
            viewportWidth: 750, // UI设计稿的宽度
            unitPrecision: 6, // 转换后的精度,即小数点位数
            propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换
            viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw
            fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw
            selectorBlackList: ['vant','wrap'], // 指定不转换为视窗单位的类名,
            minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换
            mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false
            replace: true, // 是否转换后直接更换属性值
            exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配
            include: [/dcr163/], // 设置需要使用的文件,指定文件或目录在这里配置,官方的正则方式不生效,只支持单个文件名
            landscape: false // 是否处理横屏情况
          })
    ]
};
本项目配置的文件如下

​ 在根目录的vue.config.js文件中新增配置,下面是排除node_modules目录和只转换带dcr163关键字的文件或目录

const path = require(`path`);
const webpack_modulename = require("./plugins/webpack-modulename");
const resolve = dir => path.join(__dirname, dir);
const serverAddr = require("./apiserver.config.js");
const pxToViewport = require('postcss-px-to-viewport')
module.exports = {
    chainWebpack: config => {
        config.plugins.delete('prefetch');
        config.resolve.alias.set(`@`, resolve(`src`));
    },
    css: {
        loaderOptions: { // 向 CSS 相关的 loader 传递选项
            less: {
                javascriptEnabled: true
            },
            postcss: {
                // 这里的选项会传递给 postcss-loader
                plugins: [
                    new pxToViewport({
                        unitToConvert: "px",
                        viewportWidth: 750,
                        unitPrecision: 6,
                        propList: ["*"],
                        viewportUnit: "vw",
                        fontViewportUnit: "vw",
                        selectorBlackList: ['van','wrap'],
                        minPixelValue: 1,
                        mediaQuery: true,
                        exclude: [/node_modelues/],
                        include:[/dcr163/],
                        landscape: false
                    })
                ]
            }
        }
    },
    devServer: {
        disableHostCheck: true,
        // 设置代理
        proxy: {
            "/frontapi": {
                target: serverAddr.serverAddr, // 域名
                ws: false, // 是否启用websockets
                changOrigin: true, //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
                pathRewrite: {
                    "^/frontapi/": "/"
                }
            },
            "/core/": {
                target: serverAddr.serverAddr, // 域名
                ws: false, // 是否启用websockets
                changOrigin: true //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
            },
            "/tmpdata/": {
                target: serverAddr.serverAddr, // 域名
                ws: false, // 是否启用websockets
                changOrigin: true //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
            },
            "/comdata": {
                target: serverAddr.serverAddr, // 域名
                ws: false, // 是否启用websockets
                changOrigin: true //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
            },
            "/sysdata": {
                target: serverAddr.serverAddr, // 域名
                ws: false, // 是否启用websockets
                changOrigin: true //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
            }
        }
    },
    configureWebpack: config => {
        if (process.env.NODE_ENV === "production") {
            // 为生产环境修改配置...
            //config.devtool = 'source-map';
            config.devtool = ''; //禁用SourceMap
            // config.plugins.push(new webpack_modulename());
            // config.output.filename = "js/[name].js";
            // config.output.chunkFilename = "js/[id].js";
        } else {
            // 为开发环境修改配置...
        }
    },
    publicPath: process.env.NODE_ENV === 'production' ? '/shop/front/' : '/'
};

其中新增的是下面两处位置

const pxToViewport = require('postcss-px-to-viewport')
postcss: {
    // 这里的选项会传递给 postcss-loader
    plugins: [
        new pxToViewport({
            unitToConvert: "px",
            viewportWidth: 750,
            unitPrecision: 6,
            propList: ["*"],
            viewportUnit: "vw",
            fontViewportUnit: "vw",
            selectorBlackList: ['van','wrap'],
            minPixelValue: 1,
            mediaQuery: true,
            exclude: [/node_modelues/],
            include:[/dcr163/],
            landscape: false
        })
    ]
}

VUEpostcss
朗读
赞(2)
版权属于:

Dcr163的博客

本文链接:

https://dcr163.cn/642.html(转载时请注明本文出处及文章链接)

评论 (0)

人生倒计时

今日已经过去小时
这周已经过去
本月已经过去
今年已经过去个月

最新回复

  1. William Tardent
    2024-02-27
  2. Maryann Hamer
    2024-02-27
  3. Sanora Pantano
    2024-02-24
  4. aa
    2024-02-21
  5. Kassie Baum
    2024-01-28

标签云