vue.js webpackプロジェクトでfavicon.icoを適切に設定する方法は?


91

vue webpack使用してプロジェクトを作成しましたvue-cli

vue init webpack myproject

そして、プロジェクトをdevモードで実行しました:

npm run dev

私はこのエラーを受け取りました:

リソースの読み込みに失敗しました:サーバーはステータス404(見つかりません)http:// localhost:8080 / favicon.icoで応答しました

では、webpack内で、favicon.ico正しくインポートする方法は?


1
それをサイトのルートにドロップしてみましたか?:)またはパブリックビルドフォルダー内?
ベンジャミン

回答:


150

webpackテンプレートのプロジェクト構造を確認してください:https ://vuejs-templates.github.io/webpack/structure.html

静的フォルダが一緒に、そこにあることに注意してくださいnode_modulessrcなど

staticような画像をフォルダに入れるとfavicon.pnghttp:// localhost:8080 / static / favicon.pngで利用できるようになります。

静的アセットのドキュメントは次のとおりです:https : //vuejs-templates.github.io/webpack/static.html

ファビコンの問題については、favicon.icoまたはfavicon.pngstaticフォルダに入れて<head>、index.htmlのを次のように参照できます。

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

を定義しない場合favicon.icoindex.htmlは、ブラウザがWebサイトのルート(デフォルトの動作)からファビコンを要求します。上記のようにファビコンを指定すると、その404は表示されなくなります。ファビコンはブラウザのタブにも表示されます。

補足として、ICOファイルではなくPNGを使用する理由は次のとおりです。

favicon.png vs favicon.ico-ICOの代わりにPNGを使用する必要があるのはなぜですか?


1
ファビコンをsrc / assetsに保持したい場合はどうなりますか?.gitkeepとともに静的フォルダーに残しておくのが最善ですか?
Akin Hwan

4
@AkinHwan私はまだこれを試していませんが、src / assetsにイメージを保持している場合、それはモジュールの依存関係として扱われ、インラインイメージ(base64形式)として最終的なビルドファイルに入ります。これにより、ビルドサイズが不必要に大きくなります。心配する必要はありません。パフォーマンスに影響はありません。docsで説明されいるように画像を「実際の静的アセット」として保持することが私の好みです。好みは異なる場合があります。両方の方法を試して、自分に合った方法を選択する必要があります。
Mani

6
この答えは少し時代遅れのようです。現在のvue webpackテンプレートには、静的ディレクトリではなく、公開ディレクトリがあります
JakeParis

4

Laravel 5.xの小さな更新。favicon.icoまたはまたはfavicon.png/publicフォルダーに入れて、次のindex.htmlように参照します。

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

それが役に立てば幸い !


3

何らかの理由で、デフォルトのfavicon.icoファイルをに変換しfavicon.pngて名前を変更するまでfavicon-xyz.png(上記のファイルを/publicフォルダに入れました)、index.html次のようにファイルを編集する前に、上記の解決策が機能しませんでした。

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

誰かに役立つかもしれません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.