Font Awesome 5 Bundle 通过 NPM
Font Awesome 5 Bundle via NPM
我试图通过 webpack 仅捆绑所需的 Font Awesome 5 图标,但这些图标未在 DOM 中被替换。
我已经从 documentation 添加了所有必需的包:
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代码解决问题(v5.0.2起):
"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);
尝试使用
fontawesome.library.add(faCheck);
而不是
fontawesome.icon(faCheck);
如果它不起作用,请使用您的 DOM 模板更新您的问题,以查看其中的定义。
我们刚刚发布了 5.0.2 版本并更新了@fortawesome NPM 包以修复一些与此相关的错误。确保在尝试任何其他操作之前升级。
上面例子中缺少的步骤是将图标添加到库中:
fontawesome.library.add(faCheck)
我知道这个问题已经得到解答,但我想提供一些完整解决方案的可见性,因为上面的信息不包括如何执行 SVG 图标替换。
如果你像我一样通过 NPM 和 WebPack 加载 Font Awesome 5 用于前端 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 图标替换。
我试图通过 webpack 仅捆绑所需的 Font Awesome 5 图标,但这些图标未在 DOM 中被替换。
我已经从 documentation 添加了所有必需的包:
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代码解决问题(v5.0.2起):
"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);
尝试使用
fontawesome.library.add(faCheck);
而不是
fontawesome.icon(faCheck);
如果它不起作用,请使用您的 DOM 模板更新您的问题,以查看其中的定义。
我们刚刚发布了 5.0.2 版本并更新了@fortawesome NPM 包以修复一些与此相关的错误。确保在尝试任何其他操作之前升级。
上面例子中缺少的步骤是将图标添加到库中:
fontawesome.library.add(faCheck)
我知道这个问题已经得到解答,但我想提供一些完整解决方案的可见性,因为上面的信息不包括如何执行 SVG 图标替换。
如果你像我一样通过 NPM 和 WebPack 加载 Font Awesome 5 用于前端 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 图标替换。