diff --git a/package.json b/package.json index 1852c75..748e53c 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,9 @@ "dependencies": { "pinia": "^2.0.32", "vue": "^3.2.45", - "vue-router": "^4.0.13" + "vue-router": "^4.0.13", + "postcss-px-to-viewport": "^1.1.1", + "autoprefixer": "^10.4.14" }, "devDependencies": { "@vitejs/plugin-vue": "^4.0.0", diff --git a/vite.config.js b/vite.config.js index 77287b2..a390b2c 100644 --- a/vite.config.js +++ b/vite.config.js @@ -1,6 +1,8 @@ import { defineConfig } from 'vite' import { resolve } from 'path' import vue from '@vitejs/plugin-vue' +import autoprefixer from 'autoprefixer' +import postcsspxtoviewport from 'postcss-px-to-viewport' // https://vitejs.dev/config/ export default defineConfig({ @@ -20,5 +22,33 @@ export default defineConfig({ '@import "./src/assets/scss/globalVar.scss";@import "./src/assets/scss/globalMixin.scss";', }, }, + postcss: { + plugins: [ + autoprefixer({ + overrideBrowserslist: [ + 'Android 4.1', + 'iOS 7.1', + 'Chrome > 31', + 'ff > 31', + 'ie >= 8', + ], + }), + postcsspxtoviewport({ + unitToConvert: 'px', // 要转化的单位 + viewportWidth: 1920, // UI设计稿的宽度 + unitPrecision: 6, // 转换后的精度,即小数点位数 + propList: ['*'], // 指定转换的css属性的单位,*代表全部css属性的单位都进行转换 + viewportUnit: 'vw', // 指定需要转换成的视窗单位,默认vw + fontViewportUnit: 'vw', // 指定字体需要转换成的视窗单位,默认vw + selectorBlackList: ['ignore-'], // 指定不转换为视窗单位的类名, + minPixelValue: 1, // 默认值1,小于或等于1px则不进行转换 + mediaQuery: true, // 是否在媒体查询的css代码中也进行转换,默认false + replace: true, // 是否转换后直接更换属性值 + // exclude: [/node_modules/], // 设置忽略文件,用正则做目录名匹配 + exclude: [], + landscape: false, // 是否处理横屏情况 + }), + ], + }, }, }) diff --git a/yarn.lock b/yarn.lock index 3040ec7..4e8a72c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -225,6 +225,18 @@ anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" +autoprefixer@^10.4.14: + version "10.4.14" + resolved "https://registry.npmmirror.com/autoprefixer/-/autoprefixer-10.4.14.tgz#e28d49902f8e759dd25b153264e862df2705f79d" + integrity sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ== + dependencies: + browserslist "^4.21.5" + caniuse-lite "^1.0.30001464" + fraction.js "^4.2.0" + normalize-range "^0.1.2" + picocolors "^1.0.0" + postcss-value-parser "^4.2.0" + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" @@ -237,6 +249,21 @@ braces@~3.0.2: dependencies: fill-range "^7.0.1" +browserslist@^4.21.5: + version "4.21.5" + resolved "https://registry.npmmirror.com/browserslist/-/browserslist-4.21.5.tgz#75c5dae60063ee641f977e00edd3cfb2fb7af6a7" + integrity sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w== + dependencies: + caniuse-lite "^1.0.30001449" + electron-to-chromium "^1.4.284" + node-releases "^2.0.8" + update-browserslist-db "^1.0.10" + +caniuse-lite@^1.0.30001449, caniuse-lite@^1.0.30001464: + version "1.0.30001488" + resolved "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001488.tgz#d19d7b6e913afae3e98f023db97c19e9ddc5e91f" + integrity sha512-NORIQuuL4xGpIy6iCCQGN4iFjlBXtfKWIenlUuyZJumLRIindLb7wXM+GO8erEhb7vXfcnf4BAg2PrSDN5TNLQ== + "chokidar@>=3.0.0 <4.0.0": version "3.5.3" resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz" @@ -257,6 +284,11 @@ csstype@^2.6.8: resolved "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz" integrity sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w== +electron-to-chromium@^1.4.284: + version "1.4.402" + resolved "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.402.tgz#9aa7bbb63081513127870af6d22f829344c5ba57" + integrity sha512-gWYvJSkohOiBE6ecVYXkrDgNaUjo47QEKK0kQzmWyhkH+yoYiG44bwuicTGNSIQRG3WDMsWVZJLRnJnLNkbWvA== + esbuild@^0.16.14: version "0.16.17" resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz" @@ -285,6 +317,11 @@ esbuild@^0.16.14: "@esbuild/win32-ia32" "0.16.17" "@esbuild/win32-x64" "0.16.17" +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" @@ -297,6 +334,11 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +fraction.js@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/fraction.js/-/fraction.js-4.2.0.tgz#448e5109a313a3527f5a3ab2119ec4cf0e0e2950" + integrity sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA== + fsevents@~2.3.2: version "2.3.2" resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" @@ -369,11 +411,31 @@ nanoid@^3.3.4: resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.6: + version "3.3.6" + resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.6.tgz#443380c856d6e9f9824267d960b4236ad583ea4c" + integrity sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA== + +node-releases@^2.0.8: + version "2.0.10" + resolved "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.10.tgz#c311ebae3b6a148c89b1813fd7c4d3c024ef537f" + integrity sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w== + normalize-path@^3.0.0, normalize-path@~3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.npmmirror.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +object-assign@>=4.0.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + path-parse@^1.0.7: version "1.0.7" resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" @@ -397,6 +459,28 @@ pinia@^2.0.32: "@vue/devtools-api" "^6.5.0" vue-demi "*" +postcss-px-to-viewport@^1.1.1: + version "1.1.1" + resolved "https://registry.npmmirror.com/postcss-px-to-viewport/-/postcss-px-to-viewport-1.1.1.tgz#a25ca410b553c9892cc8b525cc710da47bf1aa55" + integrity sha512-2x9oGnBms+e0cYtBJOZdlwrFg/mLR4P1g2IFu7jYKvnqnH/HLhoKyareW2Q/x4sg0BgklHlP1qeWo2oCyPm8FQ== + dependencies: + object-assign ">=4.0.1" + postcss ">=5.0.2" + +postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.npmmirror.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@>=5.0.2: + version "8.4.23" + resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.23.tgz#df0aee9ac7c5e53e1075c24a3613496f9e6552ab" + integrity sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA== + dependencies: + nanoid "^3.3.6" + picocolors "^1.0.0" + source-map-js "^1.0.2" + postcss@^8.1.10, postcss@^8.4.21: version "8.4.21" resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz" @@ -465,6 +549,14 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +update-browserslist-db@^1.0.10: + version "1.0.11" + resolved "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz#9a2a641ad2907ae7b3616506f4b977851db5b940" + integrity sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA== + dependencies: + escalade "^3.1.1" + picocolors "^1.0.0" + vite@^4.1.0: version "4.1.4" resolved "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz"