J'utilise Angular 2+ et Angular CLI.
Comment ajouter font-awesome à mon projet ?
J'utilise Angular 2+ et Angular CLI.
Comment ajouter font-awesome à mon projet ?
Après la version finale d'Angular 2.0, la structure du projet Angular2 CLI a été modifiée - vous n'avez besoin d'aucun fichier vendeur, ni de system.js - seulement de webpack. Donc vous le faites :
npm install font-awesome --save
Dans le angular-cli.json
localiser le fichier styles[]
et ajoutez le répertoire de références de font-awesome ici, 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" // -here webpack will automatically build a link css element out of this!?
],
...
}
]
],
Dans les versions plus récentes d'Angular, utilisez l'option
angular.json
à la place, sans l'option../
. Par exemple, utilisez"node_modules/font-awesome/css/font-awesome.css"
.
Placez des icônes de police dans le fichier html de votre choix :
<i class="fa fa-american-sign-language-interpreting fa-5x" aria-hidden="true"> </i>
Arrêter l'application Ctrl + c puis relancez l'application en utilisant ng serve
parce que les observateurs ne sont que pour le dossier src et angular-cli.json n'est pas observé pour les changements.
Profitez de vos superbes icônes !
Super, merci ! Vous pourriez vouloir mettre à jour votre extrait de code HTML au point 3. Il manque quelques <
Oui, Lindsay Ward, tu as raison. Le problème est que, pour une raison quelconque, l'éditeur de stack overflow cache les balises <> lorsqu'un élément i est impliqué - même si elles sont dans la section spéciale du bloc de code. Je supprime cela sciemment. Je ne sais pas comment le faire correctement. Aucune des méthodes de saut de caractères que je connais ne fonctionne. Désolé pour cela :)
Si vous utilisez SASS, vous pouvez l'installer via npm.
npm install font-awesome --save
et l'importer dans votre /src/styles.scss
avec :
$fa-font-path: "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";
Astuce : Dans la mesure du possible, évitez de vous frotter aux angular-cli
infrastructure. ;)
C'est la meilleure solution, à mon avis. Ça marche comme sur des roulettes après un ng build && ng serve -w
. Il est plus facile et plus sûr de laisser scss construire le style + les polices que d'essayer de changer l'infra d'angular-cli ;)
Meilleure réponse. Amélioration mineure : utiliser ~
au lieu de ../node_modules/
par exemple @import '~font-awesome/scss/font-awesome.scss';
La réponse ci-dessus est un peu dépassée et il existe une méthode un peu plus simple.
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 sur les nouvelles versions en $fa-font-path: "../../../node_modules/font-awesome/fonts";
en utilisant le ~
fera en sorte que sass regarde dans node_module
. Il est préférable de procéder de cette manière plutôt que d'utiliser le chemin relatif. La raison est que si vous téléchargez un composant sur npm, et que vous importez font-awesome à l'intérieur du composant scss, il fonctionnera correctement avec ~ et non avec le chemin relatif qui sera faux à ce moment-là.
Cette méthode fonctionne pour tout module npm contenant du css. Elle fonctionne également pour scss. Cependant si vous importez des css dans votre styles.scss, cela ne fonctionnera pas (et peut-être vice versa). Voici pourquoi
J'utilise cli 1.0. Juste pour vérifier, j'ai créé une application d'exemple et j'ai chargé font-awesome et déployé l'application. J'obtiens toujours cette erreur.
L'utilisation de Font-Awesome dans les projets Angular comporte 3 volets
Installation
Installer depuis NPM et sauvegarder dans votre package.json
npm install --save font-awesome
Styling Si vous utilisez le CSS
Insérez dans votre style.css
@import '~font-awesome/css/font-awesome.css';
Styling Si vous utilisez SCSS
Insérez dans votre style.scss
$fa-font-path: "../node_modules/font-awesome/fonts";
@import '~font-awesome/scss/font-awesome.scss';
Utilisation avec Angular 2.4+ 4+ simple
<i class="fa fa-area-chart"></i>
Utilisation avec Matériau angulaire
Dans votre app.module.ts, modifiez le constructeur pour qu'il utilise l'attribut MdIconRegistry
export class AppModule {
constructor(matIconRegistry: MatIconRegistry) {
matIconRegistry.registerFontClassAlias('fontawesome', 'fa');
}
}
et ajouter MatIconModule
à votre @NgModule
importations
@NgModule({
imports: [
MatIconModule,
....
],
declarations: ....
}
Maintenant, dans n'importe quel fichier de modèle, vous pouvez faire
<mat-icon fontSet="fontawesome" fontIcon="fa-area-chart"></mat-icon>
Cela vous pose-t-il un problème de regrouper la police-awesome. Je pense que le problème principal est le regroupement lorsque nous utilisons Cli. Les fichiers tff, woff, woff2 ne sont pas regroupés.
Je viens de créer une application type et j'ai suivi vos étapes. J'ai regroupé l'application en utilisant ng build. Dans la console, je vois toujours l'erreur "Unable to load woff and woff2 files".
C'est exact. Cela fonctionne parfaitement bien avec ng serve. Avec ng build, il fonctionne bien, mais la console montre qu'il est incapable de charger certains fichiers woff, woff2.
Avec Angular2
RC5 et angular-cli 1.0.0-beta.11-webpack.8
vous pouvez y parvenir avec des importations css.
Il suffit d'installer Font Awesome :
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
)
On dirait qu'il essaie d'importer mais obtient une erreur zone.js:101 - GET http://localhost:4200/node_modules/font-awesome/css/font-awesome.css 404 (Not Found)
... le fichier existe réellement mais ressemble à localhost:4200
n'est pas exécuté à partir de la racine de ce dossier ... Comment empaqueter font-awesome pour localhost:4200
Dossier racine ...
J'utilise également angular-cli@1.0.0-beta.11-webpack.2
et la configuration du fichier de style dans angular-cli.json
ne fonctionne pas ...
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
0 votes
J'ai le même problème. C'est comme si les fichiers étaient ignorés par le CLI et n'étaient pas copiés en mode dev. Cela dit, les fichiers sont bien présents dans le répertoire /dist, lorsqu'une construction est effectuée.
0 votes
Je ne comprends pas, pourquoi devons-nous ajouter font-awesome via npm, ne pourrions-nous pas simplement faire un lien vers font-awesome cdn ? Qu'est-ce que je rate ?
4 votes
@RosdiKasim vous pouvez faire un lien vers le cdn depuis votre fichier d'index. Il y a cependant des cas où vous ne voudriez pas le faire. Les projets d'entreprise peuvent ne pas autoriser les sources externes ; le CDN peut tomber en panne ; la mise à jour du CLI peut nécessiter la mise à jour du fichier index.html et vous devrez donc vous assurer qu'il n'écrase pas vos liens actuels ; font-awesome peut être une dépendance d'une autre librairie npm ; vous voulez verrouiller font-awesome à une certaine version ; votre processus de construction peut en dépendre...(et ainsi de suite, vous voyez l'idée) Au final, c'est à vous de voir comment vous voulez l'intégrer.
0 votes
Ok, merci... il semble que je ne manque pas grand chose... Je veux juste m'assurer que je comprends les avantages et les inconvénients... Merci.
0 votes
Voir également la documentation officielle pour l'ajout de JS ou CSS : angular.io/guide/