How to set favicon.ico properly on vue.js webpack project? How to set favicon.ico properly on vue.js webpack project? vue.js vue.js

How to set favicon.ico properly on vue.js webpack project?


Check out the Project Structure of webpack template: https://vuejs-templates.github.io/webpack/structure.html

Note that there is a static folder, along with node_modules, src, etc.

If you put some image into the static folder, like favicon.png, it will be made available at http://localhost:8080/static/favicon.png

Here is the documentation for static assets: https://vuejs-templates.github.io/webpack/static.html

For your favicon issue, you can put a favicon.ico or favicon.png into the static folder and refer in the <head> of your index.html as follows:

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

If you do not define a favicon.ico in your index.html, then the browser will request for a favicon from the website root (default behaviour). If you specify a favicon as above, you will not see that 404 anymore. The favicon will also start showing up in your browser tabs.

As a side note, here is the reason why I prefer PNG instead of ICO file:

favicon.png vs favicon.ico - why should I use PNG instead of ICO?


For some reason, the above solutions did not work for me before converting the default favicon.ico file to favicon.png and renaming it to favicon-xyz.png e.g. (I have put this file in /public folder) and edited the index.html file as follows:

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

Might be useful for someone.


Little update for Laravel 5/6/7/8, place your favicon.ico or favicon.png into the /public folder and refer to it in your index.html like this:

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

Hope it helps !