Skip to content

Instantly share code, notes, and snippets.

@Turbo87
Created February 15, 2015 04:05
Show Gist options
  • Select an option

  • Save Turbo87/e8e941e68308d3b40ef6 to your computer and use it in GitHub Desktop.

Select an option

Save Turbo87/e8e941e68308d3b40ef6 to your computer and use it in GitHub Desktop.
webpack + font-awesome test
require('font-awesome/css/font-awesome.css');
document.body.innerHTML = '<i class="fa fa-fw fa-question"></i>';
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8"/>
<title>Webpack Test</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>
{
"name": "webpack-font-awesome-test",
"version": "1.0.0",
"author": "Tobias Bieniek <[email protected]>",
"scripts": {
"dev": "webpack -d",
"dist": "webpack -p"
},
"dependencies": {
"font-awesome": "^4.3.0"
},
"devDependencies": {
"css-loader": "^0.9.1",
"file-loader": "^0.8.1",
"style-loader": "^0.8.3",
"url-loader": "^0.5.5",
"webpack": "^1.5.3"
}
}
var config = {
entry: './app.js',
output: {
filename: 'bundle.js'
},
module: {
loaders: [{
test: /\.css$/,
loader: 'style!css?sourceMap'
}, {
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream"
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file"
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml"
}]
}
};
module.exports = config;
@sb8244
Copy link
Copy Markdown

sb8244 commented Mar 29, 2016

This is great. Love including snippets rather than entire modules for things like this!

@ufukomer
Copy link
Copy Markdown

Thank you! It works. :)

@tacomanator
Copy link
Copy Markdown

👍👍👍

Copy link
Copy Markdown

ghost commented Jun 3, 2016

Amazing. Thanks. 👍

@renarsvilnis
Copy link
Copy Markdown

Is there any particular reason you are using url-loaderinstead of file-loader for fonts?
For me it seems unnecessary, as each browser needs a different format and why leave an option for a font file to be url-loaded as browser x might not even need it.

@sirgallifrey
Copy link
Copy Markdown

awesome!

@ivapie
Copy link
Copy Markdown

ivapie commented Jul 4, 2016

Thank you!

@abdennour
Copy link
Copy Markdown

Great!

@leihuagh
Copy link
Copy Markdown

Thank you so much.

@thangchung
Copy link
Copy Markdown

👍 It still really works after 2 years. Thanks a lot!

@vcollado
Copy link
Copy Markdown

vcollado commented Nov 4, 2016

Thank you, still working 👍

@Alex-xd
Copy link
Copy Markdown

Alex-xd commented Nov 18, 2016

really thanks! help a lot!

@davidbarredo
Copy link
Copy Markdown

Thanks!

@paradite
Copy link
Copy Markdown

paradite commented Nov 22, 2016

If you are using webpack 2 instead of webpack 1, you should use url-loader and file-loader instead of the usual url and file shorthand in the webpack config.

The reason for the change is webpack 2’s new requirements for loaders: webpack-contrib/url-loader#55

I also wrote a post on how to set up font-awesome with Angular 2: https://paradite.com/2016/10/25/font-awesome-angular-2-webpack/

@nadavten
Copy link
Copy Markdown

AWESOME !!!

@rameshsyn
Copy link
Copy Markdown

thanks

@beiweiqiang
Copy link
Copy Markdown

Thanks!! 😄

@niksajanjic
Copy link
Copy Markdown

url-loader will add mime types by default if not provided, so instead of having 5 different tests for all files I did it in a way to have 1 loader for all files:

{
  test: /\.(woff(2)?|ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
  loader: 'url?limit=10000',
}

Mime types are calculated automatically and current version of url-loader calculates these mime types:

  • fontawesome-webfont.eot -> application/vnd.ms-fontobject
  • fontawesome-webfont.woff2 -> application/octet-stream
  • fontawesome-webfont.woff -> application/font-woff
  • fontawesome-webfont.ttf -> application/x-font-ttf
  • fontawesome-webfont.svg -> image/svg+xml

If any of these mime types doesn't suit your needs don't use this approach.

@Darmikon
Copy link
Copy Markdown

niksajanjic, thanks your regular expression saved the day

@klihelp
Copy link
Copy Markdown

klihelp commented Jan 22, 2017

svg dosn't load

Module parse failed: /../assets/font/PP-Regular.svg Unexpected token (1:0)
You may need an appropriate loader to handle this file type.

@unclejustin
Copy link
Copy Markdown

I couldn't get this working as is either. But I figured it out with Webpack 2 using extract-text-webpack-plugin

https://github.com/unclejustin/webpack-font-awesome-simple

@adriancmiranda
Copy link
Copy Markdown

adriancmiranda commented Mar 8, 2017

@unclejustin try to use this approach:

$fa-font-path: "~font-awesome/fonts";
@import "~font-awesome/scss/font-awesome.scss";

@riguelbf
Copy link
Copy Markdown

great!! thanks!!!!

@Pawelh133
Copy link
Copy Markdown

thank you

@sandor11
Copy link
Copy Markdown

This was really helpful. If you are using css modules and this is not working, then have a look at

https://gist.github.com/sandor11/0319e27d0ef43637ff399ec303fa116f

@jaimefps
Copy link
Copy Markdown

jaimefps commented Oct 5, 2017

I manage to run webpack while requiring the font-awesome css file (now you also need to add "-loader" to loader names in the webpack.config); but I get 404 on the icons, which just show up as sad little squares where invoked in the html.

@b4dnewz
Copy link
Copy Markdown

b4dnewz commented Nov 12, 2017

@jaimefps same as you, did you solved?

@Hasan-git
Copy link
Copy Markdown

works, thank you

@jonasespelita
Copy link
Copy Markdown

I prefer the official way to do it as detailed in the fontawesome docs

@sureshvv
Copy link
Copy Markdown

sureshvv commented May 31, 2018

This works. font-awesome-webpack did not

Do I have to deploy the .woff, .eot, .woff2, .svg files along with the bundle.js?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment