如何使用node-modules中的font-awesome图标

Gov*_*van 104 css less node.js npm font-awesome

我已经安装了font-awesome 4.0.3图标npm install.

如果我需要从节点模块中使用它我应该如何在html文件中使用它?

如果我需要编辑less文件,我需要在节点模块中编辑吗?

Kev*_*ody 101

安装为 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";
Run Code Online (Sandbox Code Playgroud)

作为一个注释,你仍然不会通过这样做来保存那么多字节.无论哪种方式,你最终都会包括2-3k行的无限制CSS.

您还需要从/fonts/公共目录中调用的文件夹中提供字体本身.您可以使用简单的gulp任务将它们复制到那里,例如:

gulp.task('fonts', function() {
  return gulp.src('node_modules/font-awesome/fonts/*')
    .pipe(gulp.dest('public/fonts'))
})
Run Code Online (Sandbox Code Playgroud)

  • 需要更多地强调字体也需要提供给字体文件夹...我可能花了一个小时试图找出这个简单的小东西. (6认同)
  • 您还可以通过将变量"fa-font-path"设置为所需位置来调整字体静态路径. (3认同)

And*_*che 48

您必须设置正确的字体路径.例如

我-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;
}
Run Code Online (Sandbox Code Playgroud)

  • 对于萨斯来说也一样.路径`../ assets/font-awesome/fonts`适合我.谢谢. (3认同)

小智 12

在我的style.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');
Run Code Online (Sandbox Code Playgroud)


Wil*_*hes 11

您需要在构建过程中复制文件.例如,您可以使用npm postinstall脚本将文件复制到正确的目录:

"postinstall": "cp -R node_modules/font-awesome/fonts ./public/"
Run Code Online (Sandbox Code Playgroud)

对于某些构建工具,有一些预先存在的字体很棒的软件包.例如,webpack有font-awesome-webpack,可以让你简单require('font-awesome-webpack').


ppp*_*cki 11

使用 webpack 和 scss:

使用 npm 安装 font-awesome(使用https://fontawesome.com/how-to-use上的设置说明)

npm install @fortawesome/fontawesome-free
Run Code Online (Sandbox Code Playgroud)

接下来,在 webpack 构建过程中,使用copy-webpack-pluginwebfonts文件夹从node_modules复制到您的dist文件夹。( https://github.com/webpack-contrib/copy-webpack-plugin )

npm install copy-webpack-plugin
Run Code Online (Sandbox Code Playgroud)

webpack.config.js 中,配置copy-webpack-plugin。注意:默认的 webpack 4 dist 文件夹是“dist”,所以我们将 webfonts 文件夹从 node_modules 复制到 dist 文件夹。

const CopyWebpackPlugin = require('copy-webpack-plugin');

module.exports = {
    plugins: [
        new CopyWebpackPlugin([
            { from: './node_modules/@fortawesome/fontawesome-free/webfonts', to: './webfonts'}
        ])
    ]
}
Run Code Online (Sandbox Code Playgroud)

最后,在您的main.scss文件中,告诉 fontawesome webfonts文件夹已复制到的位置,并从node_modules导入您想要的 SCSS 文件。

$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` 
Run Code Online (Sandbox Code Playgroud)

并应用以下 font-familyhtml 文档中要使用 fontawesome 图标的所需区域。

示例

 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)
    }
Run Code Online (Sandbox Code Playgroud)


小智 7

使用expressjs,将其公开:

app.use('/stylesheets/fontawesome', express.static(__dirname + '/node_modules/@fortawesome/fontawesome-free/'));
Run Code Online (Sandbox Code Playgroud)

您可以在以下位置看到它: yourdomain.com/stylesheets/fontawesome/css/all.min.css


Con*_*kos 5

你可以<head></head>像这样在你的标签之间添加它:

<head>
  <link href="./node_modules/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css">
</head>
Run Code Online (Sandbox Code Playgroud)

或者无论你的道路node_modules是什么。

编辑 (2017-06-26) - 免责声明:有更好的答案。请不要使用这种方法。在这个原始答案的时候,好的工具还没有那么普遍。使用当前的构建工具(例如 webpack 或 browserify),使用此答案可能没有意义。我可以删除它,但我认为突出显示一个人拥有的各种选项以及可能的注意事项很重要。

  • 我认为没有人希望在构建中包含 node_modules 目录并直接引用它。 (18认同)
  • 我明白,但它仍然是一个选择。解决方案没有单一的答案。:) 如果你有一个捆绑系统,那么你可以像其他答案指出的那样`@import '../node_modules/...'`。 (5认同)
  • 一个简单的 npm forder 至少有 10+MB,没有用户会出于任何原因想要将这个权重添加到项目中。npm 的全部意义在于在开发过程中提供帮助,并在构建后缩小/减少生产规模。即使它有效,也不要认为这是一个好的选择。; ) (3认同)

小智 5

由于我目前正在学习node js,所以也遇到了这个问题。我所做的就是,首先,使用 npm 安装 font-awesome

npm install font-awesome --save-dev
Run Code Online (Sandbox Code Playgroud)

之后,我为 css 和字体设置了一个静态文件夹:

app.use('/fa', express.static(__dirname + '/node_modules/font-awesome/css'));
app.use('/fonts', express.static(__dirname + '/node_modules/font-awesome/fonts'));
Run Code Online (Sandbox Code Playgroud)

并在 html 中:

<link href="/fa/font-awesome.css" rel="stylesheet" type="text/css">
Run Code Online (Sandbox Code Playgroud)

它工作正常!