J'utilise la CLI angulaire 2+ et angulaire.
Comment puis-je ajouter font-awesome à mon projet?
Après la version finale de Angular 2.0, la structure du projet CLI Angular2 a été modifiée - vous n’avez besoin ni de fichiers fournisseurs, ni de system.js, mais uniquement de WebPack. Alors tu fais:
npm install font-awesome --save
Dans le fichier angular-cli.json, localisez le tableau styles[]
et ajoutez le répertoire font-awesome references, comme ci-dessous:
"apps": [ { "root": "src", "outDir": "dist", .... "styles": [ "styles.css", "../node_modules/bootstrap/dist/css/bootstrap.css", " ../node_modules/ font-awesome/css/font-awesome.css "// -il webpack générera automatiquement un élément css de lien à partir de cela!? ], ... } ] ],
Placez des icônes font-awesome dans le fichier HTML de votre choix:
<i class = "interprétant fa-5x fa-american-sign-language-language" aria-hidden = "true"> </ i>
Arrête l'application Ctrl + c puis relancez l'application en utilisant ng serve
car les observateurs ne concernent que le dossier src et angular-cli.json n'est pas pris en compte pour les modifications.
Si vous utilisez SASS, vous pouvez simplement l’installer via npm
npm install font-awesome --save
et l'importez dans votre /src/styles.scss
avec:
$fa-font-path: "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";
Conseil: évitez autant que possible de gâcher l'infrastructure angular-cli
. ;)
La réponse principale est un peu dépassée et il existe un moyen légèrement plus facile.
installer via npm
npm install font-awesome --save
dans votre style.css
:
@import '~font-awesome/css/font-awesome.css';
ou dans votre style.scss
:
$fa-font-path: "~font-awesome/fonts";
@import '~font-awesome/scss/font-awesome';
Edit: comme indiqué dans les commentaires, la ligne pour les polices doit être changée pour les versions plus récentes en $fa-font-path: "../../../node_modules/font-awesome/fonts";
en utilisant le ~
, sass cherchera dans node_module
. Il vaut mieux le faire de cette façon qu'avec le chemin relatif. La raison en est que si vous téléchargez un composant sur npm et que vous importez font-awesome dans le composant scss, il fonctionnera correctement avec ~ et non avec le chemin relatif qui sera erroné à ce stade.
Cette méthode fonctionne pour tout module npm contenant css. Cela fonctionne aussi pour scss. Cependant si vous importez des CSS dans vos styles.scss cela ne fonctionnera pas (et peut-être vice versa). Voici pourquoi
Il y a 3 parties à utiliser Font-Awesome dans Angular Projects
Installation
Installez à partir de NPM et enregistrez sur votre package.json
npm install --save font-awesome
StylingSi vous utilisez CSS
Insérer dans votre style.css
@import '~font-awesome/css/font-awesome.css';
StylingSi vous utilisez SCSS
Insérer dans votre style.scss
$fa-font-path: "../node_modules/font-awesome/fonts";
@import '~font-awesome/scss/font-awesome.scss';
Utilisation avec plain angular 2.4+ 4+
<i class="fa fa-area-chart"></i>
Utilisation avec Matériau angulaire
Dans votre app.module.ts, modifiez le constructeur pour utiliser la variable MdIconRegistry
export class AppModule {
constructor(matIconRegistry: MatIconRegistry) {
matIconRegistry.registerFontClassAlias('fontawesome', 'fa');
}
}
et ajoutez MatIconModule
à vos @NgModule
importations
@NgModule({
imports: [
MatIconModule,
....
],
declarations: ....
}
Maintenant, dans n'importe quel fichier de modèle, vous pouvez maintenant faire
<mat-icon fontSet="fontawesome" fontIcon="fa-area-chart"></mat-icon>
Avec Angular2
RC5 et angular-cli 1.0.0-beta.11-webpack.8
, vous pouvez y parvenir avec les importations css.
Il suffit d'installer la police géniale:
npm install font-awesome --save
puis importez font-awesome dans l'un de vos fichiers de style configurés:
@import '../node_modules/font-awesome/css/font-awesome.css';
(les fichiers de style sont configurés dans angular-cli.json
)
Beaucoup d'instructions ci-dessus fonctionnent, je suggère de regarder celles-ci. Cependant, quelque chose à noter:
L'utilisation de <i class="fas fa-coffee"></i>
n'a pas fonctionné dans mon projet (nouveau projet d'entraînement datant de moins d'une semaine) après l'installation. L'icône exemple ici a également été copiée dans le Presse-papiers de Font Awesome la semaine dernière.
Ce<i class="fa fa-coffee"></i>
fonctionne . Si, après l'installation de Font Awesome sur votre projet, celui-ci ne fonctionne pas encore, je vous suggère de vérifier la classe de votre icône pour supprimer le s afin de voir si cela fonctionne.
Après quelques expériences, j'ai réussi à obtenir les résultats suivants:
Installer avec npm:
npm install font-awesome --save
ajouter à angular-cli-build.js fichier:
vendorNpmFiles : [
font-awesome/**/*.+(css|css.map|otf|eot|svg|ttf|woff|woff2)',
]
ajouter à index.html
<link rel="stylesheet" href="vendor/font-awesome/css/font-awesome.min.css">
La clé était d'inclure les types de fichier de police dans le fichier angular-cli-build.js
. + (css | css.map | otf | eot | svg | ttf | woff | woff2)
Edit: J'utilise angular ^ 4.0.0 et Electron ^ 1.4.3
Si vous avez des problèmes avec ElectronJS ou similaire et que vous avez une sorte d'erreur 404, une solution de contournement consiste à modifier votre webpack.config.js
en ajoutant (et en supposant que le module de noeud font-awesome est installé via npm ou dans le fichier package.json):
new CopyWebpackPlugin([
{ from: 'node_modules/font-awesome/fonts', to: 'assets' },
{ from: 'src/assets', to: 'assets' }
]),
Notez que la configuration webpack que j'utilise a src/app/dist
en sortie et que, dans dist, un dossier assets
est créé par webpack:
// our angular app
entry: {
'polyfills': './src/polyfills.ts',
'vendor': './src/vendor.ts',
'app': './src/app/app',
},
// Config for our build files
output: {
path: helpers.root('src/app/dist'),
filename: '[name].js',
sourceMapFilename: '[name].map',
chunkFilename: '[id].chunk.js'
},
Donc, fondamentalement, ce qui se passe actuellement est:
dist
assetsMaintenant, lorsque le processus de construction sera terminé, l’application devra rechercher le fichier .scss
et le dossier contenant les icônes, en les résolvant correctement . Pour les résoudre, j’ai utilisé cela dans ma config WebPack:
// support for fonts
{
test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
loader: 'file-loader?name=dist/[name]-[hash].[ext]'
},
Enfin, dans le fichier .scss
, j'importe le fichier font-awesome .scss et définit le chemin des polices, qui est, encore une fois, dist/assets/font-awesome/fonts
. Le chemin est dist
car dans mon webpack.config, output.path est défini comme helpers.root('src/app/dist');
.
Donc, dans app.scss
:
$fa-font-path: "dist/assets/font-awesome/fonts";
@import "~font-awesome/scss/font-awesome.scss";
Notez que, de cette manière, il définira le chemin de la police (utilisé plus tard dans le fichier .scss) et importera le fichier .scss en utilisant ~font-awesome
pour résoudre le chemin font-awesome dans node_modules
.
C'est assez compliqué, mais c'est le seul moyen que j'ai trouvé pour résoudre le problème d'erreur 404 avec Electron.js
Ce message décrit comment intégrer Fontawesome 5 dans Angular 6 (Angular 5 et les versions précédentes fonctionneront également, mais vous devrez ensuite ajuster mes écrits)
Option 1: Ajouter les fichiers css
Pro: chaque icône sera incluse
Contra: chaque icône sera incluse (taille de l'application plus grande car toutes les polices sont incluses)
Ajoutez le package suivant:
npm install @fortawesome/fontawesome-free-webfonts
Ensuite, ajoutez les lignes suivantes à votre angular.json:
"app": {
....
"styles": [
....
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-regular.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-brands.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css"
],
...
}
Option 2: Paquet angulaire
Pro: taille de l'application plus petite
Contra: Vous devez inclure chaque icône que vous souhaitez utiliser séparément
Utilisez le package FontAwesome 5 Angular:
npm install @fortawesome/angular-fontawesome
Il suffit de suivre leur documentation pour ajouter les icônes. Ils utilisent les icônes-svg, vous n'avez donc qu'à ajouter les svgs/icônes que vous utilisez vraiment.
À partir de https://github.com/AngularClass/angular-starter , après avoir testé de nombreuses combinaisons de configurations, voici ce que j'ai fait pour que cela fonctionne avec AoT.
Comme déjà dit à plusieurs reprises, dans mon app.component.scss
:
$fa-font-path: "~font-awesome/fonts" !default;
@import "~font-awesome/scss/font-awesome";
Ensuite, dans webpack.config.js (en réalité, webpack.commong.js dans le Starter Pack):
Dans la section plugins:
new CopyWebpackPlugin([
{ from: 'src/assets', to: 'assets' },
{ from: 'src/meta'},
{ from: 'node_modules/font-awesome/fonts', to: 'assets/fonts/' }
]),
Dans la section des règles:
,
{
test: /\.(eot|woff2?|svg|ttf)([\?]?.*)$/,
use: 'file-loader?name=/assets/fonts/[name].[ext]'
}
Il y a beaucoup de bonnes réponses ici. Mais si vous avez tout essayé et que vous avez toujours des carrés à la place d'icônes fontawesome, vérifiez vos règles CSS. Dans mon cas, j'avais la règle suivante:
* {
font-family: Roboto-Light, Roboto, 'Helvetica Neue', sans-serif !important;
}
Et il remplace les polices fontawesome. Le simple remplacement du sélecteur *
par body
a résolu mon problème:
body {
font-family: Roboto-Light, Roboto, 'Helvetica Neue', sans-serif !important;
}
Pour angulaire 6,
Premier npm install font-awesome --save
Ajoutez node_modules/font-awesome/css/font-awesome.css
àangular.json.
Rappelez-vous not pour ajouter des points devant le node_modules/
.
Je pensais que jetterais ma résolution à cela puisque font-awesome est maintenant installé différemment selon leur documentation.
npm install --save-dev @fortawesome/fontawesome-free
Pourquoi est-il si fort maintenant de m'échapper, mais je pensais que je m'en tiendrais à la version la plus récente plutôt que de retomber dans l'ancienne police - génial.
Puis je l'ai importé dans mon scss
$fa-font-path: "../node_modules/@fortawesome/fontawesome-free/webfonts";
@import "~@fortawesome/fontawesome-free/scss/fontawesome";
@import "~@fortawesome/fontawesome-free/scss/brands";
@import "~@fortawesome/fontawesome-free/scss/regular";
@import "~@fortawesome/fontawesome-free/scss/solid";
@import "~@fortawesome/fontawesome-free/scss/v4-shims";
J'espère que cela t'aides
Vous pouvez utiliser le package Angular Font Awesome
npm installer --save font-awesome angular-font-awesome
puis importez dans votre module:
import { AngularFontAwesomeModule } from 'angular-font-awesome';
@NgModule({
//...
imports: [
//...
AngularFontAwesomeModule
],
//...
})
export class AppModule { }
et importer le style dans le fichier angular-cli:
"styles": [
"styles.css",
"../node_modules/font-awesome/css/font-awesome.css"
],
voir plus de détails sur le paquet dans la bibliothèque npm:
J'ai perdu plusieurs heures à essayer de faire fonctionner la dernière version de FontAwesome 5.2.0 avec AngularCLI 6.0.3 et Material Design. J'ai suivi les instructions d'installation npm sur le site Web de FontAwesome
Leurs derniers documents vous demandent de l'installer de la manière suivante:
npm install @fortawesome/fontawesome-free
Après avoir perdu plusieurs heures, je l'ai finalement désinstallé et installé awesome font en utilisant la commande suivante (cela installe FontAwesome v4.7.0):
npm install font-awesome --save
Maintenant cela fonctionne bien en utilisant:
$fa-font-path: "~font-awesome/fonts" !default;
@import "~font-awesome/scss/font-awesome.scss";
<mat-icon fontSet="fontawesome" fontIcon="fa-Android"></mat-icon>
Le package font-awesome sur NPM n'a pas été mis à jour depuis 2016.
Mon problème était que j'utilisais une icône qui a été ajoutée dans une version ultérieure de font-awesome.
En utilisant LESS (pas SCSS), Angular 2.4.0 et Webpack (pas Angular CLI, les éléments suivants ont fonctionné pour moi:
npm install --save font-awesome
et (dans mon app.component.less):
@import "~font-awesome/less/font-awesome.less";
et bien sûr vous aurez peut-être besoin de cet extrait évident et hautement intuitif (dans module.loaders dans webpack.conf)
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?(v=)?(\d+)(\.\d+)*)?$/,
loader: 'file?name=graphics/[name].[ext]'
},
Le chargeur est là pour corriger les erreurs webpack du genre
"Module parse failed: \node_modules\font-awesome\fonts\fontawesome-webfont.svg?v=4.7.0 Unexpected token (1:0)"
et l'expression rationnelle correspond à ces références svg (avec ou sans spécification de version). En fonction de la configuration de votre pack Web, vous n'en aurez peut-être pas besoin ou vous aurez besoin d'autre chose.
Pour l'utilisation de webpack2:
{
test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?(v=)?(\d+)(\.\d+)*)?$/,
loader: "file-loader"
}
au lieu de file-loader?name=/assets/fonts/[name].[ext]
Si, pour une raison quelconque, vous ne pouvez pas installer le paquet via npm. Vous pouvez toujours éditer index.html et ajouter une police CSS géniale dans la tête. Et puis juste utilisé dans le projet.
Ajoutez-le dans votre package.json en tant que "devDependencies" font-awesome: "numéro de version"
Accédez à l'invite de commande, tapez la commande npm que vous avez configurée.
Je voulais utiliser Font Awesome 5+ et la plupart des réponses se concentrent sur les anciennes versions.
Pour la nouvelle police Awesome 5+, le projet angular n’a pas encore été publié. Par conséquent, si vous souhaitez utiliser les exemples mentionnés dans le site Web awesome font, vous devez utiliser une solution de contournement. (surtout les fas, classes éloignées au lieu de la classe fa)
Je viens d'importer le cdn dans Font Awesome 5 dans mon styles.css. Je viens d'ajouter ceci au cas où cela aiderait quelqu'un à trouver la réponse plus rapidement que moi :-)
Code dans Style.css
@import "https://use.fontawesome.com/releases/v5.0.7/css/all.css";