Шрифт Awesome 5 Bundle через NPM
Я пытаюсь связать только необходимые значки Font Awesome 5 через webpack, но значки не заменяются в DOM.
-
Я добавил все необходимые пакеты из документации:
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
-
Включается следующий пользовательский 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,
})
-
Шаблон 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, чтобы узнать, как он там определен.
Ответ 4
Я рекомендую также проверить это обновление с 5.0 до 5.1
https://github.com/FortAwesome/Font-Awesome/blob/master/UPGRADING.md#50x-to-510
Работал на меня.