নোড-মডিউলগুলি থেকে কীভাবে ফন্ট-সন্ত্রস্ত আইকন ব্যবহার করবেন


111

আমি ফন্ট-দুর্দান্ত 4.0.০.৩ আইকন ব্যবহার করে ইনস্টল করেছি npm install

যদি আমাকে নোড-মডিউলগুলি থেকে এটি ব্যবহার করার দরকার হয় তবে কীভাবে এটি এইচটিএমএল ফাইলটিতে ব্যবহার করব?

আমাকে যদি কম ফাইল সম্পাদনা করতে হবে তবে নোড-মডিউলগুলিতে এডিট করার দরকার আছে কি?


আপনি কি কখনও এটি করার "সঠিক" উপায়টি খুঁজে পেয়েছেন? আমি বর্তমানে আমার সর্বজনীন ডিরেক্টরিতে নোড_মডিউলগুলি থেকে স্টাফটি অনুলিপি করতে একটি ঝাল টাস্কটি ব্যবহার করছি।
sjmeverett

আমি পরে এটি বোভার উপাদান হিসাবে ব্যবহার করেছি ...
গোভান

উত্তর:


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

উপরের উদাহরণে, আপনাকে নীচের ওভাররাইড সহ আপনার কম আমদানি অনুসরণ করতে হবে যাতে গুল্প দ্বারা অনুলিপি করা ফন্ট-দুর্দান্ত ফন্ট ফাইলগুলি স্থাপনার পরে পাওয়া যাবে:@fa-font-path: "/public/fonts";
CAK2

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

আমার স্টাইল। 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

ওয়েবপ্যাক এবং স্কেস ব্যবহার করে:

এনপিএম ব্যবহার করে ফন্ট-অসাধারণ ইনস্টল করুন ( https://fontawesome.com/how-to-use এ সেটআপ নির্দেশাবলী ব্যবহার করে )

npm install @fortawesome/fontawesome-free

এর পরে, ব্যবহার কপি-webpack-প্লাগইন , কপি webfonts থেকে ফোল্ডারের node_modules আপনার টু Dist ফোল্ডারটি আপনার 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 ফাইল, fontawesome ধরেছে যেখানে webfonts ফোল্ডারে অনুলিপি এবং হয়েছে SCSS আপনি যে ফাইলগুলি কাছ থেকে কি চান আমদানি node_modules

$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আপনার এইচটিএমএল নথিতে যেখানে আপনি ফন্টআউভেস আইকন ব্যবহার করতে চান সেখানে একটি পছন্দসই অঞ্চলে (গুলি) প্রয়োগ করুন ।

উদাহরণ :

 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

আপনি ওয়েবপ্যাক.কনফিগ.জেএস এ একটি নাম যুক্ত করতে পারেন: 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


ফন্টআউইজ সুপারিশ করে যে তাদের এনপিএম প্যাকেজটি একটি হিসাবে ইনস্টল করা আছে 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পরিবর্তন করা হয়, তবে এটির উত্তরগুলির মতোই টুইঙ্ক বা রক্ষণাবেক্ষণের প্রয়োজন হবে। পার্থক্য হল এই উত্তরের কোনও প্রতিস্থাপন বা কার্যের প্রয়োজন নেই। এটি ঠিক যেখানে আমদানি করা উচিত ঠিক সেখানে আমদানি করে places একটি <link>ট্যাগে।
আমেরিকান

3
একটি সাধারণ এনপিএম ফোরারের সর্বনিম্ন 10 + এমবি থাকবে, কোনও ব্যবহারকারীর কোনও কারণে কোনও প্রকল্পে সেই ওজন যুক্ত করতে চাইবে না। এনপিএমের পুরো বিষয়টি হ'ল বিকাশে থাকাকালীন এবং একবার উত্পাদন শুরু হলে মাইনিফ / কমানো। এটি কাজ করার পরেও এটি একটি ভাল বিকল্প বলে মনে করবেন না। ; )
T04435

আমি নিম্নলিখিত অস্বীকৃতি যুক্ত করেছি: এই মূল উত্তরের সময়, ভাল সরঞ্জামগুলি প্রচলিত ছিল না। ওয়েবপ্যাক বা ব্রাউজারফাইয়ের মতো বর্তমান বিল্ড সরঞ্জামগুলির সাথে, সম্ভবত এই উত্তরটি ব্যবহার করা বোধগম্য নয়। আমি এটি মুছতে পারি, তবে আমার মনে হয় যে বিভিন্ন বিকল্প রয়েছে এবং এটি করা সম্ভব এবং কী করা উচিত তা হাইলাইট করা গুরুত্বপূর্ণ।
কন আন্তোনাকোস

3

যেহেতু আমি বর্তমানে নোড জেএস শিখছি, আমিও এই সমস্যার মুখোমুখি হয়েছি। আমি যা করলাম তা হ'ল, প্রথমত, এনপিএম ব্যবহার করে হরফ-ফন্টটি ইনস্টল করুন

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

এবং এইচটিএমএলে:

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

এবং এটি ঠিক কাজ করে!


2

আপনি যদি এনএমপি ব্যবহার করেন তবে আপনি এসসিএসএস বা কম থেকে আপনার ফন্ট আশ্চর্য প্যাকেজগুলি তৈরি করতে গুলপ.জেএস বিল্ড সরঞ্জাম ব্যবহার করতে পারেন। এই উদাহরণটি এসএসএসএস থেকে কোডটি সংকলন করবে।

  1. গুলপ.জেএস ভি 4 স্থানীয়ভাবে এবং বিশ্বব্যাপী সি এল এল ভি 2 ইনস্টল করুন ।

  2. এনপিএম ব্যবহার করে গুলপ -স্যাস নামে একটি প্লাগইন ইনস্টল করুন ।

  3. আপনার সর্বজনীন ফোল্ডারে একটি প্রধান.এসএসএস ফাইল তৈরি করুন এবং এই কোডটি ব্যবহার করুন:

    $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. আপনার কমান্ড লাইনে 'গাল্প বিল্ড' চালান এবং যাদুটি দেখুন।


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

উপরের পদক্ষেপের পরে, আপনি এইচটিএমএল নোডের ভিতরে আইকনটি সন্নিবেশ করতে পারেন:

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

আপনি এইচটিএমএল স্ট্রিংটিও আইকনটির সাথে প্রতিনিধিত্ব করে এটি ব্যবহার করতে পারেন:

fontIcon.html
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.