नोड-मॉड्यूल से फ़ॉन्ट-भयानक आइकन का उपयोग कैसे करें


111

मैंने फ़ॉन्ट-भयानक 4.0.3 आइकन का उपयोग करके इंस्टॉल किया है npm install

अगर मुझे नोड-मॉड्यूल से इसका उपयोग करने की आवश्यकता है, तो मुझे इसे html फ़ाइल में कैसे उपयोग करना चाहिए?

अगर मुझे कम फाइल को संपादित करने की आवश्यकता है तो क्या मुझे नोड-मॉड्यूल में इसे संपादित करने की आवश्यकता है?


क्या आपने कभी ऐसा करने के लिए "सही" तरीका निकाला? मैं वर्तमान में केवल एक gulp कार्य का उपयोग कर रहा हूं ताकि मैं अपने सार्वजनिक निर्देशिका में नोड_मॉड्यूल्स के सामान को कॉपी कर सकूं।
20

मैंने इसे बाद में बोवर कंपोनेंट के रूप में इस्तेमाल किया ...
गोवन

जवाबों:


106

के रूप में स्थापित करें npm install font-awesome --save-dev

आपकी विकास कम फ़ाइल में, आप या तो पूरे फ़ॉन्ट को कम उपयोग करके आयात कर सकते हैं @import "node_modules/font-awesome/less/font-awesome.less", या उस फ़ाइल में देख सकते हैं और केवल उन घटकों को आयात कर सकते हैं जिनकी आपको आवश्यकता है। मुझे लगता है कि यह बुनियादी आइकन के लिए न्यूनतम है:

/* 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";

एक नोट के रूप में, आप अभी भी ऐसा करके कई बाइट्स नहीं बचा सकते हैं। किसी भी तरह से, आप अनइंस्टॉल सीएसएस की 2-3k लाइनों के बीच शामिल होने जा रहे हैं।

आपको /fonts/अपनी सार्वजनिक निर्देशिका में बुलाए गए फ़ोल्डर से स्वयं फोंट की सेवा करने की आवश्यकता होगी । आप उदाहरण के लिए, एक साधारण टोटके के साथ उन्हें वहां कॉपी कर सकते हैं:

gulp.task('fonts', function() {
  return gulp.src('node_modules/font-awesome/fonts/*')
    .pipe(gulp.dest('public/fonts'))
})

9
इसे और अधिक बल देने की आवश्यकता है कि फोंट को एक फोंट फ़ोल्डर में भी परोसा जाना आवश्यक है ... मैं शायद इस साधारण सी बात का पता लगाने की कोशिश में एक घंटा बिताता हूं।
एलेक्स जे

3
आप fa-font-pathअपने इच्छित स्थान पर चर सेट करके फ़ॉन्ट स्टेटिक्स पथ को भी अनुकूलित कर सकते हैं ।
zusatzstoff 13

उपरोक्त उदाहरण में, आपको निम्न ओवरराइड के साथ अपने कम आयातों का पालन करने की आवश्यकता है, ताकि गल्प द्वारा कॉपी किए गए फ़ॉन्ट-भयानक फ़ॉन्ट फ़ाइलें परिनियोजन के बाद @fa-font-path: "/public/fonts";
मिलें

56

आपको उचित फ़ॉन्ट पथ सेट करना होगा। जैसे

मेरी-style.scss

$fa-font-path:"../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome";
.icon-user {
  @extend .fa;
  @extend .fa-user;
}

3
Sass के लिए भी ऐसा ही है। पथ ../assets/font-awesome/fontsमेरे लिए काम करता है। धन्यवाद।
एंड्री

16

मेरी 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');

12

आपको अपनी निर्माण प्रक्रिया के हिस्से के रूप में फाइलों को कॉपी करना होगा। उदाहरण के लिए, आप npm postinstallफ़ाइलों को सही निर्देशिका में कॉपी करने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं :

"postinstall": "cp -R node_modules/font-awesome/fonts ./public/"

कुछ बिल्ड टूल के लिए, फ्रेडिंग-फॉन्ट-कमाल के पैकेज हैं। उदाहरण के लिए, वेबपैक में फ़ॉन्ट-भयानक-वेबपैक है जो आपको सरल बनाता है require('font-awesome-webpack')


11

वेबपैक और scss का उपयोग करना:

Npm का उपयोग करके फ़ॉन्ट-भयानक स्थापित करें ( https://fontawesome.com/how-to-use पर सेटअप निर्देशों का उपयोग करके )

npm install @fortawesome/fontawesome-free

इसके बाद, का उपयोग कर कॉपी-webpack-प्लगइन , कॉपी वेबफ़ॉन्ट से फ़ोल्डर node_modules अपने को जिले फ़ोल्डर आपके webpack निर्माण प्रक्रिया के दौरान। ( https://github.com/webpack-contrib/copy-webpack-plugin )

npm install copy-webpack-plugin

में webpack.config.js , कॉन्फ़िगर कॉपी-webpack-प्लगइन । नोट: डिफ़ॉल्ट वेबपैक 4 डिस्ट फ़ोल्डर "डिस्ट" है, इसलिए हम नोड फोल्डर से नोड_मॉडल से वेबफोन्स फोल्डर को कॉपी कर रहे हैं।

const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
    plugins: [
        new CopyWebpackPlugin([
            { from: './node_modules/@fortawesome/fontawesome-free/webfonts', to: './webfonts'}
        ])
    ]
}

अंत में, अपनी main.scss फ़ाइल में, फ़ॉन्टफ़ॉरेबल बताएं जहाँ webfonts फ़ोल्डर को कॉपी किया गया है और आप जिस SCSS फाइल से नोड_मॉड्यूल्स चाहते हैं, उसे आयात करें ।

$fa-font-path: "/webfonts"; // destination folder in dist
//Adapt the path to be relative to your main.scss file
@import "../node_modules/@fortawesome/fontawesome-free/scss/fontawesome";

//Include at least one of the below, depending on what icons you want.
//Adapt the path to be relative to your main.scss file
@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"; // if you also want to use `fa v4`  like: `fa fa-address-book-o` 

और font-familyअपने HTML दस्तावेज़ में एक इच्छित क्षेत्र (ओं) को लागू करें, जहाँ आप फ़ॉन्ट आइकन का उपयोग करना चाहते हैं।

उदाहरण :

 body {
      font-family: 'Font Awesome 5 Free'; // if you use fa v5 (regular/solid)
      // font-family: 'Font Awesome 5 Brands'; // if you use fa v5 (brands)
    }

1
मेरे लिए ठीक काम करता है, मैं बस से पथ को समायोजित करने के लिए किया था @import "../node_modules/[...]"के लिए@import "@/../node_modules/[...]"
mecograph

आप webpack.config.js में एक उपनाम जोड़ सकते हैं: resolve: {alias: {'node_modules': path.join(__dirname, 'node_modules')}}और फिर@import "node_modules/[...]
स्टीवन अल्मरोथ

8

एक्सप्रेस के साथ, इसे सार्वजनिक करें:

app.use('/stylesheets/fontawesome', express.static(__dirname + '/node_modules/@fortawesome/fontawesome-free/'));

और आप इसे यहाँ देख सकते हैं: yourdomain.com/stylesheets/fontawesome/css/all.min.css


FontAwesome सलाह देते हैं कि उनके npm पैकेज को एक के रूप में स्थापित किया जाए devDependency। काम (उत्पादन में) के इस समाधान के लिए पैकेज को नियमित निर्भरता के रूप में स्थापित किया जाना चाहिए?
जॉन जे। कैमिलेरी

1
मेरे अपने प्रश्न का उत्तर देने के लिए: हाँ, इसे स्थापित करने की आवश्यकता है --saveऔर नहीं--save-dev
जॉन जे। कैमिलेरी

5

आप इसे अपने <head></head>टैग के बीच जोड़ सकते हैं जैसे:

<head>
  <link href="./node_modules/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css">
</head>

या जो भी आपके लिए रास्ता node_modulesहै।

संपादित करें (2017-06-26) - अस्वीकरण: बेहतर उत्तर हैं। कृपया इस विधि का उपयोग न करें। इस मूल उत्तर के समय, अच्छे उपकरण प्रचलित नहीं थे। वर्तमान निर्माण उपकरण जैसे कि वेबपैक या ब्राउज़राइज़ के साथ, यह संभवतः इस उत्तर का उपयोग करने के लिए समझ में नहीं आता है। मैं इसे हटा सकता हूं, लेकिन मुझे लगता है कि विभिन्न विकल्पों में से एक और संभावित डॉस को उजागर करना महत्वपूर्ण है और नोट नहीं।


16
मुझे नहीं लगता कि कोई भी निर्माण में नोड_मॉडल्स निर्देशिका को शामिल करना चाहता है और इसे सीधे संदर्भित करता है।
फाबियान लेटगेब

5
मैं समझता हूं, लेकिन यह अभी भी एक विकल्प है। समाधान के लिए एक भी उत्तर नहीं है। :) अगर आपके पास एक बंडलिंग सिस्टम है, तो आप @import '../node_modules/...'पसंद कर सकते हैं जैसे अन्य उत्तरों ने संकेत दिया है।
कोन एंटोनकोस

1
अन्य उत्तरों की तुलना में, मुझे लगता है कि यह सबसे अच्छा है। आप अभी भी अन्य उत्तरों में नोड_मॉडल के माध्यम से संबंधित पथ का संदर्भ दे रहे हैं। अगर सीएसएस फ़ाइल का स्थान font-awesomeबदलना था, तो इसे अन्य उत्तरों की तरह ही ट्विकिंग या रखरखाव की आवश्यकता होगी। अंतर यह है कि इस उत्तर की आवश्यकता कोई वाष्पीकरण या कार्य नहीं है। यह सिर्फ आयात को ठीक उसी जगह रखता है जहां इसकी उम्मीद की जानी चाहिए; एक <link>टैग में।
northamerican

3
एक साधारण एनपीएम फोरडर का न्यूनतम 10 + एमबी होगा, कोई भी उपयोगकर्ता किसी भी कारण से उस वजन को एक परियोजना में जोड़ना नहीं चाहेगा। एनपीएम का पूरा बिंदु विकास में मदद करना और निर्माण के बाद उत्पादन आकार को कम / कम करना है। यह काम करने पर भी एक अच्छा विकल्प नहीं है। ; )
टी ०४४३५

मैंने निम्नलिखित अस्वीकरण जोड़ा: इस मूल उत्तर के समय, अच्छे उपकरण प्रचलित नहीं थे। वर्तमान निर्माण उपकरण जैसे कि वेबपैक या ब्राउज़राइज़ के साथ, यह संभवतः इस उत्तर का उपयोग करने के लिए समझ में नहीं आता है। मैं इसे हटा सकता हूं, लेकिन मुझे लगता है कि विभिन्न विकल्पों में से एक और संभावित डॉस को उजागर करना महत्वपूर्ण है और नोट नहीं।
कॉन एंटोनकोस

3

चूंकि मैं वर्तमान में नोड js सीख रहा हूं, इसलिए मुझे भी इस समस्या का सामना करना पड़ा। मैंने जो कुछ भी किया था, सबसे पहले, npm का उपयोग करके फ़ॉन्ट-भयानक स्थापित करें

npm install font-awesome --save-dev

उसके बाद, मैंने सीएसएस और फोंट के लिए एक स्थिर फ़ोल्डर सेट किया:

app.use('/fa', express.static(__dirname + '/node_modules/font-awesome/css'));
app.use('/fonts', express.static(__dirname + '/node_modules/font-awesome/fonts'));

और HTML में:

<link href="/fa/font-awesome.css" rel="stylesheet" type="text/css">

और यह ठीक काम करता है!


2

यदि आप npm का उपयोग कर रहे हैं, तो आप SCSS या LESS से अपने Font Awesome पैकेज बनाने के लिए Gulp.js एक बिल्ड टूल का उपयोग कर सकते हैं। यह उदाहरण SCSS से कोड संकलित करेगा।

  1. स्थानीय स्तर पर Gulp.js v4 और वैश्विक स्तर पर CLI V2 स्थापित करें ।

  2. Npm का उपयोग करके gulp-sass नामक एक प्लगइन स्थापित करें ।

  3. अपने सार्वजनिक फ़ोल्डर में एक main.scss फ़ाइल बनाएँ और इस कोड का उपयोग करें:

    $fa-font-path: "../webfonts";
    @import "fontawesome/fontawesome";
    @import "fontawesome/brands";
    @import "fontawesome/regular";
    @import "fontawesome/solid";
    @import "fontawesome/v4-shims";
  4. अपनी एप्लिकेशन निर्देशिका में एक gulpfile.js बनाएं और इसे कॉपी करें।

    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)
     );
  5. अपनी कमांड लाइन में 'gulp build' चलाएं और जादू देखें।


0

मैं इस सवाल पर आया था एक समान समस्या और सोचा था कि मैं एक और समाधान साझा करेंगे:

यदि आप एक जावास्क्रिप्ट एप्लिकेशन बना रहे हैं, तो फ़ॉन्ट भयानक आइकन को सीधे जावास्क्रिप्ट के माध्यम से संदर्भित किया जा सकता है:

सबसे पहले, इस गाइड के चरणों को करें :

npm install @fortawesome/fontawesome-svg-core

फिर अपनी जावास्क्रिप्ट के अंदर:

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' })

उपरोक्त चरणों के बाद, आप एक HTML नोड के साथ आइकन सम्मिलित कर सकते हैं:

htmlNode.appendChild(fontIcon.node[0]);

आप आइकॉन का प्रतिनिधित्व करने वाले HTML स्ट्रिंग को भी एक्सेस कर सकते हैं:

fontIcon.html
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.