Webpack 如何将字体添加到Next.js项目
我正在尝试使用webpack将font awesome添加到我的下一个.js项目中。我尝试过按照我在网上找到的各种说明(使用文件加载器、url加载器),但都不管用。我暂时放弃了用webpack加载FontAwest,但我想知道如何才能做到这一点。目前,我有一个Webpack 如何将字体添加到Next.js项目,webpack,font-awesome,next.js,webpack-2,Webpack,Font Awesome,Next.js,Webpack 2,我正在尝试使用webpack将font awesome添加到我的下一个.js项目中。我尝试过按照我在网上找到的各种说明(使用文件加载器、url加载器),但都不管用。我暂时放弃了用webpack加载FontAwest,但我想知道如何才能做到这一点。目前,我有一个.scss文件,用于加载字体 内容包括: $fa-font-path: "static/fonts"; @import "~font-awesome/scss/font-awesome.scss"; 我正在手动将字体从node\u模块/f
.scss
文件,用于加载字体
内容包括:
$fa-font-path: "static/fonts";
@import "~font-awesome/scss/font-awesome.scss";
我正在手动将字体从
node\u模块/font-awesome/font
移动到static/font
。这非常有效,但我想知道2017年是否有Webpack2方法可以做到这一点 有几种方法可以做到这一点。第一种方法是通过next/head创建一个head组件并在那里导入-请参见
另一种方法是创建一个HOC来包装您的页面,并使用一个简单的import'font awesome/css/font awesome.min.css'
或者,你可以用同样的导入方式将它导入到你的一个页面中。(不过,我相信这会将其范围扩大到该特定页面。请仔细检查我的情况)
希望这对您有所帮助。如果您想了解下一个9的真实示例,请查看 有趣的部分是:
- (用法)
- (配置)
配置:pages/_app.tsx
import { config, library } from '@fortawesome/fontawesome-svg-core';
import '@fortawesome/fontawesome-svg-core/styles.css';
import { faGithub } from '@fortawesome/free-brands-svg-icons';
import { faAngleDown } from '@fortawesome/pro-solid-svg-icons';
// See https://github.com/FortAwesome/react-fontawesome#integrating-with-other-tools-and-frameworks
config.autoAddCss = false; // Tell Font Awesome to skip adding the CSS automatically since it's being imported above
library.add(
faGithub, faAngleDown
);
通过从正确的存储库导入图标,可以使用solid/light/etc
用法:组件/Nav.tsx
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
<FontAwesomeIcon icon={['fab', 'github']} />
从'@fortawesome/react-fontawesome'导入{FontAwesomeIcon};
编辑Next.js 10: 虽然上述方法仍然有效,但我现在建议Next.js 10及更高版本将与字体相关的配置拆分为不同的文件,并在
\u app.tsx
中导入该文件。这使得代码更易于维护,仅此而已
比如:
- 纱线添加@fortawesome/fontawesome免费
- in_app.js
import '@fortawesome/fontawesome-free/js/fontawesome'; import '@fortawesome/fontawesome-free/js/solid'; import '@fortawesome/fontawesome-free/js/regular'; import '@fortawesome/fontawesome-free/js/brands';
- 有关的官方文档,请参见此处
您将能够执行以下操作:
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { config, library } from '@fortawesome/fontawesome-svg-core';
import { fas } from '@fortawesome/free-solid-svg-icons';
import { fab } from '@fortawesome/free-brands-svg-icons';
config.autoAddCss = false;
library.add(fas, fab);
return (
<FontAwesomeIcon icon={['fas', 'hat-wizard']} />
<FontAwesomeIcon icon={['fab', 'github']} />
)
从'@fortawesome/react-fontawesome'导入{FontAwesomeIcon};
从“@fortawesome/fontawesome svg核心”导入{config,library};
从“@fortawesome/free solid svg icons”导入{fas};
从“@fortwome/free brands svg icons”导入{fab};
config.autoAddCss=false;
库。添加(fas、fab);
报税表(
)
或
从'@fortawesome/react-fontawesome'导入{FontAwesomeIcon};
从“@fortawesome/free brands svg icons/faAdobe”导入{faAdobe}”;
报税表(
)
这篇文章中没有一个解决方案是关于如何通过cdn使用font awesome的,所以,我打算这样做 有多种方法,但我通常使用_app.js或_document.js来完成这些任务 下面是它如何通过_document.js实现的
从“next/Document”导入文档,{Html,Head,Main,NextScript};
类MyDocument扩展了文档{
render(){
返回(
);
}
}
导出默认MyDocument
此解决方案就是您正在寻找的解决方案请注意,当前的答案仍然与Next.js 10兼容,但我发现了一种更易于维护的方法,它只与Next.js 10+兼容,基本上就是将所有与字体相关的内容移到另一个文件中,然后在\u app.tsx
中导入该文件。就像在那里做的一样:谢谢。这真的很有帮助。然而,Fontawesome的src链接似乎再也找不到了。在我将链接更改为上显示的链接后,它运行良好(*不要将此链接用作src。跳转到网站,然后在那里获得链接)
import '@fortawesome/fontawesome-free/js/fontawesome';
import '@fortawesome/fontawesome-free/js/solid';
import '@fortawesome/fontawesome-free/js/regular';
import '@fortawesome/fontawesome-free/js/brands';