306 votes

Comment ajouter font-awesome à un projet Angular 2 + CLI

J'utilise Angular 2+ et Angular CLI.

Comment ajouter font-awesome à mon projet ?

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.

530voto

AIon Points 5169

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 :

  1. npm install font-awesome --save

  2. 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" .

  3. 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>
  4. 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.

  5. Profitez de vos superbes icônes !

0 votes

Super, merci ! Vous pourriez vouloir mettre à jour votre extrait de code HTML au point 3. Il manque quelques <

0 votes

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 :)

0 votes

C'est la bonne méthode, merci de la partager. Savez-vous où c'est documenté ?

140voto

F.D.Castel Points 492

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. ;)

1 votes

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 ;)

38 votes

Meilleure réponse. Amélioration mineure : utiliser ~ au lieu de ../node_modules/ par exemple @import '~font-awesome/scss/font-awesome.scss';

5 votes

Ne fonctionne pas pour moi avec angular4 et scss. Je peux voir la css mais pas l'icône.

77voto

Ced Points 6385

La réponse ci-dessus est un peu dépassée et il existe une méthode un peu plus simple.

  1. installer via npm

    npm install font-awesome --save

  2. 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

0 votes

J'obtiens toujours la même erreur après avoir suivi vos étapes.

0 votes

Échec du chargement des fichiers .ttf, woff et woff2

0 votes

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.

59voto

muttonUp Points 2986

L'utilisation de Font-Awesome dans les projets Angular comporte 3 volets

  1. Installation
  2. Stylisation (CSS/SCSS)
  3. Utilisation dans Angular

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>

1 votes

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.

0 votes

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".

1 votes

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.

15voto

shusson Points 2369

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 )

1 votes

On dirait qu'il essaie d'importer mais obtient une erreur zone.js:101 - GET http://localhost:4200/node_modules/font-awesome/css/font-awe‌​some.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 ...

0 votes

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 ...

1 votes

Hmm c'est étrange, peut-être mettre à niveau vers 1.0.0-beta.11-webpack.8 ?

Prograide.com

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.

Powered by:

X