如何在使用@angular/cli創(chuàng)建的angular項目上添加postcss插件

安裝自定義用的插件

npm i -D @angular-builders/custom-webpack @angular-builders/dev-server postcss-px-to-viewport

檢查一下@angular-builders的主版本號(7.x.x)是不是和我們的@angular/cli主版本一致项滑,這里用angular7來示范。
修改angular.json文件衔统,全局搜索

@angular-devkit/build-angular:browser

替換為

@angular-builders/custom-webpack:browser

@angular-builders/custom-webpack:browser同級的options選項里添加

 "customWebpackConfig": {
              "path": "./webpack.config.js"
           },

全局搜索

@angular-devkit/build-angular:dev-server

替換為

@angular-builders/dev-server:generic

在angular.json同級目錄下新增webpack.config.js,內(nèi)容如下

var pxtoviewport = require('postcss-px-to-viewport');

function regexEquals(firstValue,secondValue){
    return firstValue+'' == secondValue +'';
}
const addPostCssPlugins = [//自定義的postcss插件
    pxtoviewport({
        viewportWidth: 750,
        viewportHeight: 1334,
        unitPrecision: 5,
        viewportUnit: 'vw',
        selectorBlackList: [],
        minPixelValue: 1,
        mediaQuery: false
    })
]
module.exports = (config, options) => {
//   console.log(config.module.rules);
  let rules = config.module.rules;
  let styleRules = rules.filter(rule => {
      let test = rule.test;
      return regexEquals(test,/\.css$/)|| regexEquals(test,/\.scss$|\.sass$/)|| regexEquals(test,/\.less$/)|| regexEquals(test,/\.styl$/);
  });
  console.log(styleRules)
  styleRules.forEach(rule => {
    //   console.log(rule);
     let currentPostCssLoader = rule.use.find(loader => loader.loader==='postcss-loader');
     let getPluginsFn = currentPostCssLoader.options.plugins;
     let getPluginsAddedFn = (loader)=>{
         return [...getPluginsFn(loader),...addPostCssPlugins];
     }
     currentPostCssLoader.options.plugins = getPluginsAddedFn;
    //  console.log(typeof currentPostCssLoader.options.plugins)
    //  console.log(currentPostCssLoader.options.plugins())
    //  currentPostCssLoader.options.plugins.push(...addPostCssPlugins);
  })
  return config;
};

然后吧彪,運行npm start,運行ng build --prod試驗下效果氧急,你會看到我們自定義的postcss插件已經(jīng)起作用了斯辰。
附錄:https://github.com/angular/angular-cli/blob/master/packages/angular_devkit/build_angular/src/angular-cli-files/models/webpack-configs/styles.ts

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帆焕,一起剝皮案震驚了整個濱河市救氯,隨后出現(xiàn)的幾起案子找田,更是在濱河造成了極大的恐慌,老刑警劉巖着憨,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件墩衙,死亡現(xiàn)場離奇詭異,居然都是意外死亡甲抖,警方通過查閱死者的電腦和手機漆改,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來准谚,“玉大人挫剑,你說我怎么就攤上這事》湛” “怎么了暮顺?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長秀存。 經(jīng)常有香客問我,道長羽氮,這世上最難降的妖魔是什么或链? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮档押,結(jié)果婚禮上澳盐,老公的妹妹穿的比我還像新娘。我一直安慰自己令宿,他們只是感情好叼耙,可當(dāng)我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著粒没,像睡著了一般筛婉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上癞松,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天爽撒,我揣著相機與錄音,去河邊找鬼响蓉。 笑死硕勿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的枫甲。 我是一名探鬼主播源武,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼扼褪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粱栖?” 一聲冷哼從身側(cè)響起话浇,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎查排,沒想到半個月后凳枝,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡跋核,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年岖瑰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片砂代。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡蹋订,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出刻伊,到底是詐尸還是另有隱情露戒,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布捶箱,位于F島的核電站智什,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏丁屎。R本人自食惡果不足惜荠锭,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晨川。 院中可真熱鬧证九,春花似錦、人聲如沸共虑。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽妈拌。三九已至拥坛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間供炎,已是汗流浹背渴逻。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留音诫,地道東北人惨奕。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像竭钝,于是被迫代替她去往敵國和親梨撞。 傳聞我的和親對象是個殘疾皇子雹洗,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,512評論 2 359

推薦閱讀更多精彩內(nèi)容