Shadow
VUE安装 postcss-px-to-viewport,将px单位转换为视口单位的 (vw, vh, vmin, vmax)
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
})
]
}
Dcr163的博客
https://www.dcr163.cn/642.html(转载时请注明本文出处及文章链接)