J'ai installé les icônes font-awesome 4.0.3 en utilisant npm install
.
Si j'ai besoin de l'utiliser à partir de modules de nœud, comment dois-je l'utiliser dans un fichier html?
Si j'ai besoin d'éditer moins de fichier, dois-je l'éditer dans les modules de nœud?
Installer en tant que npm install font-awesome --save-dev
Dans votre fichier de développement moins, vous pouvez soit importer la police entière moins impressionnante en utilisant @import "node_modules/font-awesome/less/font-awesome.less"
, soit consulter ce fichier et importer uniquement les composants dont vous avez besoin. Je pense que c'est le minimum pour les icônes de base:
/* adjust path as needed */
@fa_path: "../node_modules/font-awesome/less";
@import "@{fa_path}/variables.less";
@import "@{fa_path}/mixins.less";
@import "@{fa_path}/path.less";
@import "@{fa_path}/core.less";
@import "@{fa_path}/icons.less";
En note, vous n'allez toujours pas sauvegarder autant d'octets en faisant cela. Dans les deux cas, vous allez finir par inclure entre 2 et 3 000 lignes de CSS non modifiées.
Vous aurez également besoin de servir les polices elles-mêmes à partir d'un dossier appelé /fonts/
dans votre répertoire public. Vous pouvez simplement les copier là-bas avec une tâche simple gulp, par exemple:
gulp.task('fonts', function() {
return gulp.src('node_modules/font-awesome/fonts/*')
.pipe(gulp.dest('public/fonts'))
})
Vous devez définir le chemin de police approprié. par exemple.
$fa-font-path:"../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome";
.icon-user {
@extend .fa;
@extend .fa-user;
}
Vous devrez copier les fichiers dans le cadre de votre processus de construction. Par exemple, vous pouvez utiliser un script npm postinstall
pour copier les fichiers dans le bon répertoire:
"postinstall": "cp -R node_modules/font-awesome/fonts ./public/"
Pour certains outils de construction, il existe des packages font-awesome préexistants. Par exemple, webpack a font-awesome-webpack qui vous permet d'utiliser require('font-awesome-webpack')
de manière simple.
Dans mon fichier style.css
/* You can add global styles to this file, and also import other style files */
@import url('../node_modules/font-awesome/css/font-awesome.min.css');
Vous pouvez l'ajouter entre votre balise <head></head>
comme suit:
<head>
<link href="./node_modules/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css">
</head>
Ou quel que soit votre chemin d'accès à votre node_modules
.
Edit (2017-06-26) - Disclaimer: Au moment de cette réponse originale, les bons outils étaient moins répandus. Avec les outils de construction actuels tels que webpack ou browserify, il n’a probablement aucun sens à utiliser cette réponse. Je peux le supprimer, mais j'estime qu'il est important de souligner les différentes options possibles et les éventuelles choses à faire.
Comme je suis en train d'apprendre le noeud js, j'ai aussi rencontré ce problème. Tout ce que j’ai fait, c’est d’abord d’installer le font-awesome à l’aide de npm
npm install font-awesome --save-dev
après cela, j'ai défini un dossier statique pour les fichiers css et les polices:
app.use('/fa', express.static(__dirname + '/node_modules/font-awesome/css'));
app.use('/fonts', express.static(__dirname + '/node_modules/font-awesome/fonts'));
et en html:
<link href="/fa/font-awesome.css" rel="stylesheet" type="text/css">
et ça marche bien!
Avec expressjs, le public le:
app.use('/stylesheets/fontawesome', express.static(__dirname + '/node_modules/@fortawesome/fontawesome-free/'));
Et vous pouvez le voir à: yourdomain.com/stylesheets/fontawesome/css/all.min.css
Utilisation de webpack et scss:
Installez font-awesome en utilisant npm (en utilisant les instructions de configuration de https://fontawesome.com/how-to-use )
npm install @fortawesome/fontawesome-free
Ensuite, en utilisant copy-webpack-plugin, copiez le dossier webfonts de node_modules dans votre dossier dist lors de la création de votre webpack. ( https://github.com/webpack-contrib/copy-webpack-plugin )
npm install copy-webpack-plugin
Dans webpack.config.js, configurez copy-webpack-plugin. REMARQUE: le dossier Webpack 4 dist par défaut est "dist". Nous allons donc copier le dossier webfonts de node_modules dans le dossier dist.
const CopyWebpackPlugin = require('copy-webpack-plugin');
module.exports = {
plugins: [
new CopyWebpackPlugin([
{ from: './node_modules/@fortawesome/fontawesome-free/webfonts', to: './webfonts'}
])
]
}
Enfin, dans votre fichier main.scss, indiquez à fontawesome où le dossier webfonts a été copié et importez les fichiers SCSS de node_modules.
$fa-font-path: "/webfonts";
@import "../node_modules/@fortawesome/fontawesome-free/scss/fontawesome";
//Include at least one of the below, depending on what icons you want.
@import "../node_modules/@fortawesome/fontawesome-free/scss/brands";
@import "../node_modules/@fortawesome/fontawesome-free/scss/regular";
@import "../node_modules/@fortawesome/fontawesome-free/scss/solid";
@import "../node_modules/@fortawesome/fontawesome-free/scss/v4-shims";
Si vous utilisez npm, vous pouvez utiliser Gulp.js, un outil de construction pour construire vos paquets Font Awesome à partir de SCSS ou de LESS. Cet exemple compilera le code à partir de SCSS.
Installez Gulp.js v4 localement et CLI V2 globalement.
Installez un plugin appelé gulp-sass using npm.
Créez un fichier main.scss dans votre dossier public et utilisez ce code:
$fa-font-path: "../webfonts";
@import "fontawesome/fontawesome";
@import "fontawesome/brands";
@import "fontawesome/regular";
@import "fontawesome/solid";
@import "fontawesome/v4-shims";
Créez un fichier gulpfile.js dans votre répertoire app et copiez-le.
const { src, dest, series, parallel } = require('gulp');
const sass = require('gulp-sass');
const fs = require('fs');
function copyFontAwesomeSCSS() {
return src('node_modules/@fortawesome/fontawesome-free/scss/*.scss')
.pipe(dest('public/scss/fontawesome'));
}
function copyFontAwesomeFonts() {
return src('node_modules/@fortawesome/fontawesome-free/webfonts/*')
.pipe(dest('public/dist/webfonts'));
}
function compileSCSS() {
return src('./public/scss/theme.scss')
.pipe(sass()).pipe(dest('public/css'));
}
// Series completes tasks sequentially and parallel completes them asynchronously
exports.build = parallel(
copyFontAwesomeFonts,
series(copyFontAwesomeSCSS, compileSCSS)
);
Exécutez 'gulp build' dans votre ligne de commande et observez la magie.
Je suis tombé sur cette question avec un problème similaire et je pensais partager une autre solution:
Si vous créez une application Javascript, vous pouvez également référencer directement des icônes de police de caractères géniales via Javascript:
Tout d’abord, suivez les étapes de ce guide :
npm install @fortawesome/fontawesome-svg-core
Puis dans votre javascript:
import { library, icon } from '@fortawesome/fontawesome-svg-core'
import { faStroopwafel } from '@fortawesome/free-solid-svg-icons'
library.add(faStroopwafel)
const fontIcon= icon({ prefix: 'fas', iconName: 'stroopwafel' })
Après les étapes ci-dessus, vous pouvez insérer l'icône à l'intérieur d'un nœud HTML avec:
htmlNode.appendChild(fontIcon.node[0]);
Vous pouvez également accéder à la chaîne HTML représentant l'icône avec:
fontIcon.html