31 votes

Comment puis-je ajouter Font Awesome à mon projet Aurelia en utilisant npm?

J'ai suivi le Gestionnaire de Contacts tutoriel et souhaitez ajouter des Polices Génial pour le projet. Voici ce que j'ai fait jusqu'à présent:

  • npm install Font-Awesome --save
  • A ajouté ce qui suit à l' aurelia.jsonsous les dépendances tableau de l' vendor-bundle.js:


...
{
    "name": "font-awesome",
    "path": "../node_modules/font-awesome",
    "resources": [
      "css/font-awesome.min.css"
    ]
},
...

Mais lors de l'exécution au run --watch j'obtiens l'erreur:

erreur C:\Users\node_modules\font-awesome.js

Pourquoi est-il à la recherche pour le .js fichier?

54voto

JayDi Points 1009

Ne pas ajouter de la police impressionnant de ressources pour aurelia.json - vous aurez besoin des fichiers de police, qui Aurelia ne pas le traiter. Au lieu de cela, prendre les mesures suivantes.

Tout d'abord, si vous avez ajouté quelque chose pour font-awesome déjà à votre aurelia.json le fichier, supprimez-le de nouveau.

Ajouter un nouveau fichier prepare-font-awesome.js dans le dossier \aurelia_project\tasks et insérez le code ci-dessous. Il copie de la police impressionnant de fichiers de ressources pour le dossier de sortie (comme configuré aurelia.json le fichier config; par exemple, scripts):

import gulp from 'gulp';
import merge from 'merge-stream';
import changedInPlace from 'gulp-changed-in-place';
import project from '../aurelia.json';

export default function prepareFontAwesome() {
  const source = 'node_modules/font-awesome';

  const taskCss = gulp.src(`${source}/css/font-awesome.min.css`)
    .pipe(changedInPlace({ firstPass: true }))
    .pipe(gulp.dest(`${project.platform.output}/css`));

  const taskFonts = gulp.src(`${source}/fonts/*`)
    .pipe(changedInPlace({ firstPass: true }))
    .pipe(gulp.dest(`${project.platform.output}/fonts`));

  return merge(taskCss, taskFonts);
}

Ouvrez l' build.js le fichier dans l' \aurelia_project\tasks le dossier et insérer les deux lignes suivantes; cela permettra d'importer la nouvelle fonction et de l'exécuter:

import prepareFontAwesome from './prepare-font-awesome'; // Our custom task

export default gulp.series(
  readProjectConfiguration,
  gulp.parallel(
    transpile,
    processMarkup,
    processCSS,
    prepareFontAwesome // Our custom task
  ),
  writeBundles
);

Enfin, dans l' <head> section de votre index.html le fichier, il suffit d'ajouter la ligne suivante:

<link rel="stylesheet" href="scripts/css/font-awesome.min.css">

C'est tout; maintenant, vous pouvez utiliser font-awesome icônes dans toute Aurelia affichage de modules (fichiers html).

Notez que cela fonctionne pour n'importe quel complexe troisième partie de la bibliothèque qui nécessite des ressources qui vous devez inclure manuellement.

13voto

4imble Points 3494

Simple les paramètres par défaut de la méthode

Voici les 4 étapes simples que j'utilise pour apporter de la Police Impressionnant pour un Aurelia projet qui utilise la CLI.

1) npm install font-awesome-enregistrer

2) ajouter copyFiles à l'édification d'aurelia.json

"build": {
    "copyFiles": {
      "node_modules/font-awesome/fonts/*": "/fonts/"
    },

3) ajouter le regroupement des dépendances tableau de aurelia.json

"dependencies": [
{
    "name": "font-awesome",
    "path": "../node_modules/font-awesome/css",
    "main": "font-awesome.css"
},

4) inclure l'importation du fichier css (le mien vit dans l'app.html)

<require from="font-awesome.css"></require>

=========================================================================

Alternative

La spécification d'une police personnalisée emplacement

Comme j'étais à mes fichiers à partir d'un autre emplacement, j'ai besoin d'être en mesure de l'ajustez la police emplacement configuré. En tant que tel, ci-dessous sont les étapes à suivre si vous devez faire de même et de préciser l'endroit où les polices sont stockées. Je suis à l'aide .moins

1, 2) Comme ci-dessus.

3) au Lieu d'ajouter à la subordination, vous avez besoin de faire référence à la font-awesome moins de fichiers au sein de votre propre moins (le mien est appelé site.moins) et puis définissez l' @fa-font-path de votre emplacement personnalisé.

@import "../node_modules/font-awesome/less/font-awesome.less";
@fa-font-path:   "fonts";

4) Il n'y a pas de 4, avec cette méthode, tant que vous avez votre propre compilé équivalent site.css le fichier référencé déjà (à l'importation), vous n'avez pas besoin d'ajouter quoi que ce soit d'autre.

8voto

Vincent Sels Points 321

Pas réellement de réponse à votre question de savoir comment intégrer la Police Génial dans votre application à l'aide de la NGP, mais il existe une alternative, propre façon de l'obtenir dans votre application: à l'aide de la CAN.

Comme mentionné dans d'autres réponses, Aurlia actuellement ne prend pas en charge le regroupement des ressources autres que js, css et html out-of-the-box à l'aide de la CLI. Il y a beaucoup de discussion sur ce sujet, et il en existe plusieurs, surtout hacky, des solutions de contournement, comme certains l'ont suggéré ici.

Rob Eisenberg a dit qu'il avait l'intention de faire correctement intégrée dans l'Aurelia, CLI, mais il estime qu'il est de faible priorité parce qu'il y a une solution simple. Pour le citer:

Bien sûr, il y a intérêt à aborder cette. Cependant, il est moins prioritaire que d'autres choses sur la liste de la CLI, en partie à cause d'une simple balise link résoudre le problème, et il est beaucoup plus facile que le travail que nous aurions à faire pour résoudre ce à l'intérieur de la CLI.

Source: https://github.com/aurelia/cli/issues/248#issuecomment-254254995

  1. Obtenir votre unique CDN lien posté ici: http://fontawesome.io/get-started/
  2. Inclure ce lien dans la tête de votre index, votre fichier html
  3. N'oubliez pas de retirer tout ce dont vous pourriez avoir déjà ajouté à essayer de le faire fonctionner: le package npm (et sa référence dans votre forfait.json), la référence dans votre aurelia.fichier json, toutes les tâches personnalisées que vous pourriez avoir créé, tout <require> tags...

8voto

Grace W. Points 79

Drôle, j'essayais de faire fonctionner la même chose ce matin. C'est tout ce que j'avais à faire dans mes dépendances aurelia.json pour que cela fonctionne:

       {
        "name": "font-awesome",
        "path": "../node_modules/font-awesome/",
        "main": "",
        "resources": [
          "css/font-awesome.min.css"
        ]
      },
 

Puis dans mon html j'avais:

 <require from="font-awesome/css/font-awesome.min.css"></require>
 

6voto

codenamejames Points 325

l'importation css/fonts automagicly est maintenant pris en charge.

{
    "name": "font-awesome",
    "path": "../node_modules/font-awesome/css",
    "main": "font-awesome.css"
}

<require from="font-awesome.css"></require>

La caisse de ce "Problème" https://github.com/aurelia/cli/issues/249
Heureux codding


MODIFIER

J'ai réalisé/lire les commentaires de ce ne copie pas les fichiers de police. Voici une mise à jour du script de construction (es6) qui va copier toutes les ressources et ajouter le dossier à la git d'ignorer. Si vous voulez le tapuscrit de vérification de version ici
https://github.com/aurelia/cli/issues/248#issuecomment-253837412

./aurelia_project/tasks/build.js

import gulp from 'gulp';
import transpile from './transpile';
import processMarkup from './process-markup';
import processCSS from './process-css';
import { build } from 'aurelia-cli';
import project from '../aurelia.json';
import fs from 'fs';
import readline from 'readline';
import os from 'os';

export default gulp.series(
  copyAdditionalResources,
  readProjectConfiguration,
  gulp.parallel(
    transpile,
    processMarkup,
    processCSS
  ),
  writeBundles
);

function copyAdditionalResources(done){
  readGitIgnore();
  done();
}

function readGitIgnore() {
  let lineReader = readline.createInterface({
    input: fs.createReadStream('./.gitignore')
  });
  let gitignore = [];

  lineReader.on('line', (line) => {
    gitignore.push(line);
  });

  lineReader.on('close', (err) => {
    copyFiles(gitignore);
  })
}

function copyFiles(gitignore) {
  let stream,
    bundle = project.build.bundles.find(function (bundle) {
      return bundle.name === "vendor-bundle.js";
    });

  // iterate over all dependencies specified in aurelia.json
  for (let i = 0; i < bundle.dependencies.length; i++) {
    let dependency = bundle.dependencies[i];
    let collectedResources = [];
    if (dependency.path && dependency.resources) {
      // run over resources array of each dependency
      for (let n = 0; n < dependency.resources.length; n++) {
        let resource = dependency.resources[n];
        let ext = resource.substr(resource.lastIndexOf('.') + 1);
        // only copy resources that are not managed by aurelia-cli
        if (ext !== 'js' && ext != 'css' && ext != 'html' && ext !== 'less' && ext != 'scss') {
          collectedResources.push(resource);
          dependency.resources.splice(n, 1);
          n--;
        }
      }
      if (collectedResources.length) {
        if (gitignore.indexOf(dependency.name)< 0) {
          console.log('Adding line to .gitignore:', dependency.name);
          fs.appendFile('./.gitignore', os.EOL + dependency.name, (err) => { if (err) { console.log(err) } });
        }

        for (let m = 0; m < collectedResources.length; m++) {
          let currentResource = collectedResources[m];
          if (currentResource.charAt(0) != '/') {
            currentResource = '/' + currentResource;
          }
          let path = dependency.path.replace("../", "./");
          let sourceFile = path + currentResource;
          let destPath = './' + dependency.name + currentResource.slice(0, currentResource.lastIndexOf('/'));
          console.log('Copying resource', sourceFile, 'to', destPath);
          // copy files
          gulp.src(sourceFile)
            .pipe(gulp.dest(destPath));
        }
      }
    }
  }
}


function readProjectConfiguration() {
  return build.src(project);
}

function writeBundles() {
  return build.dest();
}

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