icon fortawesome fontawesome font awesome javascript font-awesome aurelia aurelia-framework

javascript - fortawesome - npm install font awesome



¿Cómo puedo agregar Font Awesome a mi proyecto Aurelia usando npm? (8)

He estado siguiendo el tutorial de Contact Manager y me gustaría agregar Font Awesome al proyecto. Esto es lo que he hecho hasta ahora:

  • npm install Font-Awesome --save
  • Se agregó lo siguiente a aurelia.json en la matriz de dependencias de vendor-bundle.js :


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

Pero cuando au run --watch me sale el error:

error C: / Users / node_modules / font-awesome.js

¿Por qué está buscando el archivo .js ?


Método de configuración predeterminado simple

Estos son los 4 pasos simples que uso para incorporar Font-Awesome a un proyecto de Aurelia que usa la CLI.

1) npm install font-awesome --save

2) agregue copyFiles a la compilación de aurelia.json

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

3) agregue la agrupación a la matriz de dependencias de aurelia.json

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

4) incluye la importación del archivo css (el mío vive en la aplicación.html)

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

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

Alternativa

Especificar una ubicación de fuente personalizada

Como estaba sirviendo mis archivos desde una ubicación diferente, necesitaba poder modificar la ubicación de la fuente configurada. Como tal, a continuación se detallan los pasos necesarios si necesita hacer lo mismo y especificar dónde se almacenan las fuentes. Estoy usando .less

1, 2) Como arriba.

3) En lugar de agregar al paquete, debe hacer referencia al archivo menos fuente-impresionante dentro de su propio archivo menos (el mío se llama site.less) y luego establecer @fa-font-path a su ubicación personalizada.

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

4) No hay 4, con este método, siempre y cuando tenga su propio archivo site.css equivalente compilado al que se site.css referencia (con la importación), no necesita agregar nada más.


Creo que la sección bundles.dependencies es para hacer referencia a las bibliotecas JS.

En su caso, se necesitará un poco de trabajo adicional. Según los documentos de CLI de Aurelia , también puede crear sus propios generadores, lo cual es útil para nosotros.

Agregue algunas rutas nuevas a aurelia.json :

"paths": { ... "fa": "node_modules//font-awesome", "faCssOutput": "src", "faFontsOutput": "fonts" ... }

Crear una tarea para la agrupación css ... au generate task fa-css

Archivo de tareas modificado: aurelia_project/tasks/fa-css.js|ts

import * as gulp from ''gulp''; import * as changedInPlace from ''gulp-changed-in-place''; import * as project from ''../aurelia.json''; import {build} from ''aurelia-cli''; export default function faCss() { return gulp.src(`${project.paths.fa}//css//*.min.css`) .pipe(changedInPlace({firstPass:true})) /* this ensures that our ''require-from'' path will be simply ''./font-awesome.min.css'' */ .pipe(gulp.dest(project.paths.faCssOutput)) .pipe(gulp.src(`${project.paths.faCssOutput}//font-awesome.min.css`)) .pipe(build.bundle()); };

... y otro para copiar archivos de fuentes: au generate task fa-fonts

Archivo de tareas modificado: aurelia_project/tasks/fa-fonts.js|ts

import * as gulp from ''gulp''; import * as project from ''../aurelia.json''; export default function faFonts() { return gulp.src(`${project.paths.fa}//fonts//*`) .pipe(gulp.dest(project.paths.faFontsOutput)); }

Agregue estas nuevas tareas anteriores al proceso de compilación en aurelia_project/tasks/build.js|ts :

export default gulp.series( readProjectConfiguration, gulp.parallel( transpile, processMarkup, processCSS, // custom tasks faCss, faFonts ), writeBundles );

Después de seguir estos pasos, au build debería incrustar font-awesome.min.css en scripts / app-bundle.js y copiar los archivos de fuentes necesarios en la carpeta ./fonts.

Lo último que debe hacer es requerir font-awesome dentro de nuestro html.

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


Es curioso que intentara hacer que lo mismo funcionara esta mañana. Esto es todo lo que tenía que hacer en mis dependencias aurelia.json para que funcione:

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

Luego en mi html tuve:

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


Importar css / fonts de forma automática ahora es compatible.

{ "name": "font-awesome", "path": "../node_modules/font-awesome/css", "main": "font-awesome.css" } <require from="font-awesome.css"></require>

Consulte este "Issue" https://github.com/aurelia/cli/issues/249
Feliz codificación

EDITAR

Me di cuenta / leí los comentarios, esto no copia los archivos de fuentes. Aquí hay un script de compilación actualizado (es6) que copiará cualquier recurso y agregará la carpeta al git ignore. Si quieres la versión mecanografiada marca aquí
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(); }


No agregue recursos de fuente asombrosa a aurelia.json: también necesitaría archivos de fuente, que Aurelia no procesa. En su lugar, siga los siguientes pasos.

Primero, si ya agregó algo para font-awesome a su archivo aurelia.json , elimínelo nuevamente.

Agregue el nuevo archivo prepare-font-awesome.js en la carpeta /aurelia_project/tasks e inserte el siguiente código. Copia archivos de recursos de fuente impresionante en la carpeta de salida (como archivo de configuración aurelia.json configurado; por ejemplo, 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); }

Abra el archivo build.js en la /aurelia_project/tasks e inserte las siguientes dos líneas; esto importará la nueva función y la ejecutará:

import prepareFontAwesome from ''./prepare-font-awesome''; // Our custom task export default gulp.series( readProjectConfiguration, gulp.parallel( transpile, processMarkup, processCSS, prepareFontAwesome // Our custom task ), writeBundles );

Finalmente, en la sección <head> de su archivo index.html , simplemente agregue la siguiente línea:

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

Eso es todo; ahora puede usar íconos de fuente impresionante en cualquier módulo de vista de Aurelia (archivos html).

Tenga en cuenta que esto funciona para cualquier biblioteca de terceros compleja que requiera recursos que debe incluir manualmente.


No estoy respondiendo realmente a su pregunta de cómo integrar Font Awesome en su aplicación usando NPM , pero hay una forma alternativa y limpia de obtenerlo en su aplicación: usando el CDN.

Como se mencionó en otras respuestas, Aurlia actualmente no admite la agrupación de recursos que no sean js, css y html listos para usar con la CLI. Se discute mucho sobre este tema, y ​​hay varias soluciones, en su mayoría extravagantes, como algunas sugeridas aquí.

Rob Eisenberg dice que planea integrarlo adecuadamente en la CLI de Aurelia, pero considera que tiene baja prioridad porque hay una solución simple. Para citarlo:

Por supuesto, hay interés en abordar esto. Sin embargo, es menos prioritario que otras cosas en la lista para la CLI, en parte porque una simple etiqueta de enlace solucionará el problema y es mucho más fácil que el trabajo que tendríamos que hacer para resolver esto dentro de la CLI.

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

  1. Obtenga su enlace CDN único enviado por correo aquí: http://fontawesome.io/get-started/
  2. Incluya este enlace en el encabezado de su archivo html de índice
  3. No olvide eliminar todo lo que ya haya agregado para intentar que funcione: el paquete npm (y su referencia en su package.json), la referencia en su archivo aurelia.json, cualquier tarea personalizada que haya creado, cualquier etiqueta <require> , ...

No necesitas más esto:

en aurelia.json

"dependencies": [ "jquery", "text", { "name": "bootstrap", "path": "../node_modules/bootstrap/dist/", "main": "js/bootstrap.min", "deps": ["jquery"], "resources": [ "css/bootstrap.min.css" ] }, { "name": "font-awesome", "path": "../node_modules/font-awesome/css", "main": "", "resources": [ "font-awesome.min.css" ] } ] } ], "copyFiles": { "node_modules/font-awesome/fonts/fontawesome-webfont.woff": "fonts/", "node_modules/font-awesome/fonts/fontawesome-webfont.woff2": "fonts/", "node_modules/font-awesome/fonts/FontAwesome.otf": "fonts/", "node_modules/font-awesome/fonts/fontawesome-webfont.ttf": "fonts/", "node_modules/font-awesome/fonts/fontawesome-webfont.svg": "fonts/" }

Consulte la sección Configuración para copiar archivos

Espero ayudarte.


Para aquellos que desean usar la versión sass de font-awesome

1) Instalar font-awesome

npm install font-awesome --save

2) Copie las fuentes de font-awesome en el directorio raíz de su proyecto

cp -r node_modules/font-awesome/fonts .

3) Incluya el directorio font-awesome sass en la tarea del procesador aurelia css

# aurelia_project/tasks/process-css.js export default function processCSS() { return gulp.src(project.cssProcessor.source) .pipe(sourcemaps.init()) .pipe(sass({ includePaths: [ ''node_modules/font-awesome/scss'' ] }).on(''error'', sass.logError)) .pipe(build.bundle()); };

4) Importa font-awesome en tu aplicación scss

# src/app.scss @import ''font-awesome'';

5) Requiere su aplicación scss en su html

# src/app.html <template> <require from="./app.css"></require> </template>