Шрифт Awesome 5 Bundle через NPM

Я пытаюсь связать только необходимые значки Font Awesome 5 через webpack, но значки не заменяются в DOM.

  1. Я добавил все необходимые пакеты из документации:

    yarn add -D @fortawesome/fontawesome
    yarn add -D @fortawesome/fontawesome-pro-solid
    yarn add -D @fortawesome/fontawesome-pro-regular
    yarn add -D @fortawesome/fontawesome-free-brands
    
  2. Включается следующий пользовательский JS:

    "use strict";
    
    import fontawesome from '@fortawesome/fontawesome';
    import faCheck from '@fortawesome/fontawesome-pro-regular/faCheck';
    
    fontawesome.icon(faCheck);
    
    function iconsDoneRendering () {
        console.log('Icons have rendered'); // No output in console
    }
    
    fontawesome.dom.i2svg({ 
        callback: iconsDoneRendering,
    })
    
  3. Шаблон HTML:

    <head>
        <link rel="stylesheet" href="/css/app.css?v2.1.4"> <!-- contains fa-svg-with-js.css -->
    </head>
    <body>
        <ul class="fa-ul">
            <li><span class="fa-li"><i class="far fa-phone"></i></span>List item 1</li>
            <li><span class="fa-li"><i class="far fa-check"></i></span>List item 2</li>
        </ul>
        <script src="/js/app.js?v2.1.4"></script>
    </body>
    

Путь svg находится внутри связанного JS файла, но я не могу понять, какой метод нужно вызывать.


Следующий JS-код решает проблему (начиная с версии 5.0):

"use strict";

import fontawesome from '@fortawesome/fontawesome';
import faCheck from '@fortawesome/fontawesome-pro-regular/faCheck';
import faPhone from '@fortawesome/fontawesome-pro-regular/faPhone';

fontawesome.library.add(faCheck,faPhone);

Ответы

Ответ 1

Мы только что выпустили версию 5.0.2 и обновили пакеты @fortawesome NPM, чтобы исправить несколько ошибок, связанных с этим. Перед тем,

Недопустимый шаг вышеприведенного примера - добавить значок в библиотеку:

fontawesome.library.add(faCheck)

Ответ 2

Я понимаю, что это уже ответили, но я хотел бы дать некоторую видимость для полного решения, поскольку приведенная выше информация не включает в себя, как выполнить замену значка SVG.

Если вы загружаете Font Awesome 5 через NPM и WebPack для использования в интерфейсном HTML, как и я, вам нужно будет сделать что-то подобное в своем JS, включенном в ваш комплект:

"use strict";

// Import FontAwesome: https://fontawesome.com/how-to-use/use-with-node-js
import fontawesome  from '@fortawesome/fontawesome';

// This enables using FontAwesome in CSS pseudo elements
// see: https://fontawesome.com/how-to-use/svg-with-js#pseudo-elements
fontawesome.config.searchPseudoElements = true;

// Icons should be imported individually to keep bundle size down
import faCheck from '@fortawesome/fontawesome-pro-regular/faCheck';
import faPhone from '@fortawesome/fontawesome-pro-solid/faPhone';
fontawesome.library.add(faCheck, faPhone);

// If really necessary, entire styles can be loaded instead of specifying individual icons
//import solid from '@fortawesome/fontawesome-pro-solid';
//fontawesome.library.add(solid);

// Execute SVG replacement
fontawesome.dom.i2svg();

Последняя строка является ключевой, вы должны вручную выполнить замену значков SVG.

Ответ 3

Попробуй использовать

fontawesome.library.add(faCheck);

вместо

fontawesome.icon(faCheck);

Если это не сработает, обновите свой вопрос с помощью шаблона DOM, чтобы узнать, как он там определен.