主要是.postcssrc.js中的配置
在進入主題之前先記錄下node中讀取檔案路徑的問題,node.js中的檔案路徑主要是包括__dirname,__filename,process.cwd(),./,../等,前面三個是絕對路徑,後面是相對路徑,當然你可以用path.resolve('./')來轉換相對絕對路徑
我的資料夾配置如下,路徑為E:\vue\vue-uk
現在分別在build/vue-loader.conf.js檔案,和.postcssrc.js檔案中列印這三個值:__dirname,__filename,process.cwd(),以下為列印結果
1. build/vue-loader.conf.js
2. .postcssrc.js
做個總結:
__dirname:獲得當前執行檔案所在目錄的完整目錄名
__filename:獲得當前執行檔案的帶有完整絕對路徑的檔名
process.cwd():獲得當前執行node命令時候的資料夾目錄名
ok,進入正題.postcssrc.js的配置問題,一般很多人都是直接在Github上面copy下來,也許不會保錯,但是...
首先將大框架搭好
module.exports = {
"plugins": {
//各種外掛
}
}
複製程式碼
現在以postcss-px2rem、autoprefixer為例子,當然要保證這兩個外掛已經安裝好
npm install postcss-loader --save--dev
npm install postcss-px2rem --save--dev
npm install autoprefixer --save--dev
複製程式碼
postcss-px2rem是將css檔案中的px轉換成rem,autoprefixer是加上各種瀏覽器字首
module.exports = {
"plugins": {
"postcss-px2rem": {
//UI圖片的基準值 750px就是75,640px就是64,預設為75
remUnit: 75,
remPrecision: 6, //準換成rem後的小數點精確數位 預設為6
baseDpr: 2, //基準device pixel ratio值 預設為2
//當然npm上還有很多options 按需求配置
},
// to edit target browsers: use "browserslist" field in package.json
//一般package.json中會有browserslist的配置,這裡直接寫出來就好
"autoprefixer": {}
}
}
複製程式碼
當然postcss不止這些配置,到現在為止,postcss上已經有超過200個外掛
其他常見的外掛還有postcss-import,解析檔案中@import的外掛,postcss-url解析css中背景圖url引用的外掛,還有資源引用外掛postcss-assets,使用postcss-assets中的resolve方法可以簡便css中url的引用,width()、height()可以直接獲取圖片的寬高
"postcss-assets": {
loadPaths: [path.resolve(__dirname,'src/assets/img')], //__dirname用法見前面
relative: true //開啟相對路徑模式
}
複製程式碼
現在配置後css中可以直接使用img中的圖片
.func-normal{
background-image: resolve('head_bar@2x.jpg');
}
複製程式碼
而不需要寫
background-image: resolve('../assets/img/head_bar@2x.jpg');
複製程式碼
也可以
.class{
width: width('foobar.png'); /* 320px */
height: height('foobar.png'); /* 240px */
}
複製程式碼
詳細的postcss-assets配置見www.npmjs.com/package/pos…
最後.postcssrc.js的配置大概是
const path = require('path');
module.exports = {
"plugins": {
"postcss-import": {},
"postcss-url": {},
"postcss-assets": {
loadPaths: [path.resolve(__dirname,'src/assets/img')],
relative:true
},
"postcss-px2rem": {
remUnit: 75,
},
"autoprefixer": {}
}
}
複製程式碼
你還可以往裡面加很多很多的postcss配置來完善css...