摘要:發(fā)現(xiàn)問題看到和都升級到了團(tuán)隊(duì)打算用新版本做些新東西有和中文文檔的加成開始還算順利也能把項(xiàng)目跑起來但是打包的時(shí)候發(fā)生問題了報(bào)錯如下分析問題首先觀察這是一個的報(bào)錯說是函數(shù)沒有收到正確的值再
發(fā)現(xiàn)問題
看到 vue-cli3 和 framework7 都升級到3.0了,團(tuán)隊(duì)打算用新版本做些新東西.
有 https://github.com/framework7... 和 vue-cli3 中文文檔的加成, 開始還算順利, npm run serve 也能把項(xiàng)目跑起來. 但是 npm run build 打包的時(shí)候發(fā)生問題了. 報(bào)錯如下:
ERROR Error: CSS minification error: Parse error on line 1: 8px + constant(safe-area-i ------^ Expecting "SUB", "LPAREN", "NESTED_CALC", "NUMBER", "CSS_VAR", "LENGTH", "ANGLE", "TIME", "FREQ", "RES", "EMS", "EXS", "CHS", "REMS", "VHS", "VWS", "VMINS", "VMAXS", "PERCENTAGE", got "PREFIX". File: chunk-vendors.842c282c.css Error: CSS minification error: Parse error on line 1: 8px + constant(safe-area-i ------^ Expecting "SUB", "LPAREN", "NESTED_CALC", "NUMBER", "CSS_VAR", "LENGTH", "ANGLE", "TIME", "FREQ", "RES", "EMS", "EXS", "CHS", "REMS", "VHS", "VWS", "VMINS", "VMAXS", "PERCENTAGE", got "PREFIX". File: chunk-vendors.842c282c.css at D:workmobile3 [email protected]:106:21 npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] build: `vue-cli-service build` npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] build script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above. npm ERR! A complete log of this run can be found in: npm ERR! C:UserszzAppDataRoaming pm-cache\_logs2018-08-16T05_07_51_763Z-debug.log分析問題
首先觀察這是一個 CSS minification 的報(bào)錯, 說是 calc 函數(shù)沒有收到正確的值.
再以報(bào)錯信息 8px + constant(safe-area-i 搜索 f7 的 css 文件 發(fā)現(xiàn)很多這樣的代碼:
padding-left: calc(8px + constant(safe-area-inset-right)); padding-left: calc(8px + env(safe-area-inset-right));
然后搜索 safe-area-inset-right, 發(fā)現(xiàn)這是一個 iPhone X (有文章: http://www.css88.com/archives... )的屬性, 作用是用來解決iPhone X 額頭的凹槽帶來的問題.
再以 constant 為關(guān)鍵字去搜索 vue-cli3 的issue.
https://github.com/vuejs/vue-... 尤大表示是 cssnano 的問題
https://github.com/framework7... framework7 的作者表示這是 ios 必須的, 不是我的錯, 請向 cssnano 提出問題.
https://github.com/cssnano/cs... cssnano 說 safe-area-inset-right 這個屬性是非標(biāo)準(zhǔn)的, 是蘋果 iPhone x 私有的, 而且也不是我的鍋, 你看看 reduce-css-calc 吧
https://github.com/MoOx/reduc... reduce-css-calc 表示知道,但沒有解決
總結(jié)一下, f7 使用了一個iPhone x 專用的非標(biāo)準(zhǔn) css 屬性, 導(dǎo)致 cssnano 中一個處理 calc 的小插件標(biāo)錯.
解決問題 取消使用calc插件 (失敗)首先想到的是取消 cssnano 中這個小插件的使用, 首先嘗試修改 node_modules/@vue/cli-service/lib/config/css.js 中的 cli 配置文件將下面一段全部注釋掉
webpackConfig .plugin("optimize-css") .use(require("@intervolga/optimize-cssnano-plugin"), [{ sourceMap: options.productionSourceMap && sourceMap, cssnanoOptions: cssProcessorOptions }])
嘗試注釋掉整個 cssnano, 發(fā)現(xiàn) npm run build 可以通過, css未壓縮.
然后看能不能只取消 calc 插件的使用, 看 https://cssnano.co/ cssnano 官網(wǎng), npm, github, 愣是沒找到完整的參數(shù)配置說明, 只有 https://cssnano.co/guides/pre... 中的簡單介紹和示例, 在 cli 的配置文件中嘗試設(shè)置 calc:false 也沒有用,這個方法失敗.
取消使用行不通只能等 cssnano 的大神再看看了,畢竟iPhone用戶那么多,總會解決的.但是項(xiàng)目不等人,考慮到即便這個插件更新了也還要等 vue-cli 更新,打算先找個臨時(shí)解決方法.
考慮了一下, 官方示例是在 main.js 中引用 css文件的, 所以css 要經(jīng)過優(yōu)化處理. 但是 f7 官方其實(shí)提供了 framework7.min.css 這樣的文件, 完全可以不經(jīng)過我們的優(yōu)化處理直接使用,所以嘗試直接在 index.html 中引用 css 文件.首先考慮直接把 css 文件拿出來放到 public 目錄, 但是覺得不妥, 一方面這個 css 文件放入版本管理有些不必要, 另一方面每次 f7 更新都要記得自己去更新這個文件很麻煩, 所以參考官方文檔 https://cli.vuejs.org/zh/config/#chainwebpack 的語法修改 webpack 配置,用 copy 插件把文件拷貝出來
代碼如下:
// vue.config.js const path = require("path"); module.exports = { chainWebpack: config => { config .plugin("copy-f7-css") .use(require("copy-webpack-plugin"), [[{ from: path.resolve(__dirname,"./node_modules/framework7/css/framework7.min.css"), to: path.resolve(__dirname,"./dist/css"), }]]) } }
同時(shí)把 main.js 里的 f7 的 css 引用注釋掉.
執(zhí)行 npm run build 問題解決.
只是以后我們自己想使用 safe-area-inset- 這樣的屬性還會造成錯誤的, 所以不算正真地解決了這個問題, 不過只能先這樣解決了.
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/108232.html
摘要:那么,我們該如何去配置自己的項(xiàng)目了其實(shí)這一切都是因?yàn)榈捻?xiàng)目初始化,幫開發(fā)者已經(jīng)解決了,甚至絕大部分情形下的配置。 vue-cli 3 英文文檔vue-cli 3 中文文檔webpack 4 pluginswebpack-chain TLDR vue-cli 3 與 2 版本有很大區(qū)別 vue-cli 3 的 github 倉庫由原有獨(dú)立的 github 倉庫遷移到了 vue 項(xiàng)目下 ...
摘要:那么,我們該如何去配置自己的項(xiàng)目了其實(shí)這一切都是因?yàn)榈捻?xiàng)目初始化,幫開發(fā)者已經(jīng)解決了,甚至絕大部分情形下的配置。 vue-cli 3 英文文檔vue-cli 3 中文文檔webpack 4 pluginswebpack-chain TLDR vue-cli 3 與 2 版本有很大區(qū)別 vue-cli 3 的 github 倉庫由原有獨(dú)立的 github 倉庫遷移到了 vue 項(xiàng)目下 ...
摘要:那么,我們該如何去配置自己的項(xiàng)目了其實(shí)這一切都是因?yàn)榈捻?xiàng)目初始化,幫開發(fā)者已經(jīng)解決了,甚至絕大部分情形下的配置。 vue-cli 3 英文文檔vue-cli 3 中文文檔webpack 4 pluginswebpack-chain TLDR vue-cli 3 與 2 版本有很大區(qū)別 vue-cli 3 的 github 倉庫由原有獨(dú)立的 github 倉庫遷移到了 vue 項(xiàng)目下 ...
摘要:安裝與配置最近公司要開新項(xiàng)目,用配置,讓我搞一搞,做個記錄。最好自己去官網(wǎng)過一遍的文檔安裝完成后檢測一下是否安裝成功,如下圖展示。顯示以上就安裝成功。第一個默認(rèn)配置只會安裝和,其它的需要自己配置,不建議選,這里我們選擇第二個手動配置。 vue-cli3.0安裝與配置 最近公司要開新項(xiàng)目,用vue-cli3.0配置,讓我搞一搞,做個記錄。 安裝 首先你要升級到cli3.0,命令如下。(最...
閱讀 1189·2021-11-24 09:39
閱讀 2695·2021-09-28 09:35
閱讀 1085·2019-08-30 15:55
閱讀 1381·2019-08-30 15:44
閱讀 888·2019-08-29 17:00
閱讀 1985·2019-08-29 12:19
閱讀 3324·2019-08-28 18:28
閱讀 702·2019-08-28 18:10