Laravel 5.4 使用 font-awesome

〇、資源的打包過(guò)程

在開(kāi)始引入 font-awesome 前,我們先了解一下 Laravel 的資源打包過(guò)程。

Laravel 使用 laravel-mix 調(diào)用 webpack 對(duì)資源打包。Mix 基于 webpack 的配置, 所以運(yùn)行定義于 package.json 文件中的 NPM 腳本,執(zhí)行 Mix 的編譯任務(wù)。

例如,npm run dev 根據(jù) package.json 定義,實(shí)際執(zhí)行以下腳本:

"dev": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"

webpack會(huì)自動(dòng)執(zhí)行位于 webpack.mix.js中的編譯任務(wù):

//webpack.mix.js
const { mix } = require('laravel-mix');
mix.js('resources/assets/js/app.js', 'public/js')
   .sass('resources/assets/sass/app.scss', 'public/css');

所以,我們引入 font-awesome,只需修改 app.scss 即可。

一、安裝 font-awesome

npm install --save font-awesome

項(xiàng)目安裝在 node_modules/font-awesome

二、修改 app.scss

app.scss 中,加入以下內(nèi)容:

@import "node_modules/font-awesome/scss/font-awesome"

三、編譯資源

npm run dev

四、疑難解答

如果 web server 使用 apache,且 document root 位于項(xiàng)目的 public 目錄中,那么使用 OK。

如果項(xiàng)目目錄是 document rooot 的子目錄,font-awesome 則不能正常使用。
原因如下:
webpack 使用 node_modules/laravel-mix/setup/webpack.config.js 作為配置文件。對(duì)于 font-awesome 的字體文件,處理 rule 如下:

        {                                                                                                                                                    
            test: /\.(woff2?|ttf|eot|svg|otf)$/,                                                                                                             
            loader: 'file-loader',                                                                                                                           
            options: {                                                                                                                                       
                name: 'fonts/[name].[ext]?[hash]',                                                                                                 
                publicPath: Mix.resourceRoot                                                                                                                 
            }                                                                                                                                                
        },                                                                                                                                                   

因此生成的 css 文件,font 的路徑如下:

@font-face {
  font-family: 'FontAwesome';
  src: url(/fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713);
  src: url(/fonts/fontawesome-webfont.eot?674f50d287a8c48dc19ba404d20fe713) format("embedded-opentype"), url(/fonts/fontawesome-webfont.woff2?af7ae505a9eed503f8b8e6982036873e) format("woff2"), url(/fonts/fontawesome-webfont.woff?fee66e712a8a08eef5805a46892932ad) format("woff"), url(/fonts/fontawesome-webfont.ttf?b06871f281fee6b241d60582ae9369b9) format("truetype"), url(/fonts/fontawesome-webfont.svg?912ec66d7572ff821749319396470bde) format("svg");
  font-weight: normal;
  font-style: normal;
}

<document root>/fonts 下自然是不能找到字體。

因此,解決方法有兩個(gè):

  1. 設(shè)置 document root 至 public目錄,或使用虛擬主機(jī)實(shí)現(xiàn)
  2. 修改 node_modules/laravel-mix/setup/webpack.config.js 中 font 的路徑。如 fonts -> project/public/fonts
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 無(wú)意中看到zhangwnag大佬分享的webpack教程感覺(jué)受益匪淺,特此分享以備自己日后查看,也希望更多的人看到...
    小小字符閱讀 8,371評(píng)論 7 35
  • 不多說(shuō),直接開(kāi)始搭建 1、安裝Laravel 通過(guò) Composer Create-Project 你還可以在終端...
    熒惑3_3閱讀 2,305評(píng)論 0 0
  • GitChat技術(shù)雜談 前言 本文較長(zhǎng),為了節(jié)省你的閱讀時(shí)間,在文前列寫(xiě)作思路如下: 什么是 webpack,它要...
    蕭玄辭閱讀 12,894評(píng)論 7 110
  • 目錄第1章 webpack簡(jiǎn)介 11.1 webpack是什么? 11.2 官網(wǎng)地址 21.3 為什么使用 web...
    lemonzoey閱讀 1,829評(píng)論 0 1
  • 繼續(xù)和善而堅(jiān)定的送響響去幼兒園! 做好一些日常約定,之前的被響撕掉了! 控制情緒。最近比較暴躁
    響珊珊閱讀 138評(píng)論 0 0

友情鏈接更多精彩內(nèi)容