在自己搭建腳手架的過程遇到一些坑,有坑才有進步~
寫這個為了記錄一下坑的同時,也可以作為一些經驗分享給有需要的人。
報錯截圖:在scss文件寫@font-face的時候,編譯就已經報錯啦

至於原因呢,查了一下,官網是這樣說的:
由於 Sass/libsass 並沒有提供url rewriting 的功能,所以所有的鏈接資源都是相對輸出文件(output)而言。
- 如果生成的 CSS 沒有傳遞給 css-loader,它相對於網站的根目錄。
- 如果生成的 CSS 傳遞給了 css-loader,則所有的 url 都相對於入口文件(例如:
main.scss)。
第二種情況可能會帶來一些問題。正常情況下我們期望相對路徑的引用是相對於 .scss 去解析(如同在 .css文件一樣)。幸運的是,有2個方法可以解決這個問題:
- 將 resolve-url-loader 設置於 loader 鏈中的 sass-loader 之后,就可以重寫 url。
- Library 作者一般都會提供變量,用來設置資源路徑,如 bootstrap-sass 可以通過
$icon-font-path來設置。參見this working bootstrap example。
解決辦法一:
在sass-loader之前,再加一個resolve-url-loader,安裝就不用我講了吧~
解決方法二:
src使用絕對路徑,雖然有點不優雅,因為別人本地的項目路徑不一定一樣
還有一個很黑暗的方法就是。。使用vscode的easy-sass插件將我們的聲明字體的scss文件編譯成css,再將該css通過@import到我們所用到的組件中去。哈哈哈哈
如果有大神有更加優雅的方法,可以一起分享一下,感激~~
