Come impostare correttamente favicon.ico sul progetto webpack vue.js?


91

Ho creato un vue webpackprogetto usando vue-cli.

vue init webpack myproject

E poi ha eseguito il progetto in devmodalità:

npm run dev

Ho ricevuto questo errore:

Impossibile caricare la risorsa: il server ha risposto con uno stato di 404 (non trovato) http: // localhost: 8080 / favicon.ico

Quindi all'interno del webpack, come importare favicon.icocorrettamente?


1
Hai provato a rilasciarlo nella radice del sito? :) O nella cartella di compilazione pubblica?
Benjamin

Risposte:


150

Controlla la struttura del progetto del modello webpack: https://vuejs-templates.github.io/webpack/structure.html

Si noti che non v'è una cartella statica, insieme node_modules, srce così via

Se metti qualche immagine nella staticcartella, ad esempio favicon.png, sarà resa disponibile su http: // localhost: 8080 / static / favicon.png

Ecco la documentazione per le risorse statiche: https://vuejs-templates.github.io/webpack/static.html

Per il tuo problema con la favicon, puoi mettere un favicon.icoo favicon.pngnella staticcartella e fare riferimento nel <head>tuo index.html come segue:

<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" type="image/png" href="/static/favicon.png"/>
    <title>My Vue.js app</title>
    ...
</head>

Se non si definisce un favicon.iconel proprio index.html, il browser richiederà una favicon dalla radice del sito Web (comportamento predefinito). Se specifichi una favicon come sopra, non vedrai più quella 404. La favicon inizierà a essere visualizzata anche nelle schede del browser.

Come nota a margine, ecco il motivo per cui preferisco il file PNG invece del file ICO:

favicon.png vs favicon.ico - perché dovrei usare PNG invece di ICO?


1
cosa succede se voglio mantenere la mia favicon in src / assets? è meglio lasciarlo nella cartella statica insieme a .gitkeep?
Akin Hwan

4
@AkinHwan Non l'ho ancora provato, ma se mantieni un'immagine in src / assets, verrà trattata come una dipendenza del modulo e andrà nel file di build finale come immagine inline (formato base64). Ciò aumenterà inutilmente le dimensioni della build. Niente di cui preoccuparsi, non influirà in alcun modo sulle prestazioni. È mia preferenza mantenere le immagini come "risorse statiche reali", come spiegato nei documenti . Le tue preferenze possono variare. Devi provare entrambi i metodi e scegliere quello che funziona per te.
Mani

6
Questa risposta sembra un po 'datata. Nell'attuale modello vue webpack, c'è una directory pubblica , non una directory statica .
JakeParis

4

Piccolo aggiornamento per Laravel 5.x, posiziona il tuo favicon.icoo favicon.pngnella /publiccartella e fai riferimento ad esso in index.htmlquesto modo:

<head>
    <meta charset="utf-8">
    <link rel="shortcut icon" type="image/png" href="/favicon.png"/>
    <title>My Vue.js app</title>
    ...
</head>

Spero che sia d'aiuto !


3

Per qualche motivo, le soluzioni di cui sopra non hanno funzionato per me prima di convertire il favicon.icofile predefinito in favicon.pnge rinominarlo ad favicon-xyz.pngesempio (ho inserito questo file nella /publiccartella) e modificato il index.htmlfile come segue:

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <link rel="icon" href="<%= BASE_URL %>favicon-xyz.png">
    .
    .
    .
</head>

Potrebbe essere utile per qualcuno.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.