node-modulesからfont-awesomeアイコンを使用する方法


111

を使用してfont-awesome 4.0.3アイコンをインストールしましたnpm install

node-modulesから使用する必要がある場合、htmlファイルでどのように使用すればよいですか?

lessファイルを編集する必要がある場合、node-modulesで編集する必要がありますか?


これを行う「正しい」方法を見つけたことがありますか?私は現在、gulpタスクを使用して、node_modulesからパブリックディレクトリにデータをコピーしています。
sjmeverett

私は...後で亭コンポーネントとしてそれを使用
Govan

回答:


106

としてインストール npm install font-awesome --save-dev

開発の少ないファイルでは、を使用してフォント全体をawesome lessでインポートするか@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";

注として、これを行っても、それほど多くのバイトを節約することはできません。いずれにせよ、2〜3k行の縮小されていないCSSが含まれることになります。

また/fonts/、パブリックディレクトリにあるフォルダーからフォント自体を提供する必要もあります。たとえば、次のような単純なgulpタスクを使用してそれらをコピーできます。

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

9
フォントはfontsフォルダーにも提供する必要があることを強調する必要があります...この単純な小さなことを理解するために、おそらく1時間費やしました。
Alex J

3
変数fa-font-pathを目的の場所に設定して、フォントの静的パスを調整することもできます。
zusatzstoff 2016年

:一息でコピーされたフォント素晴らしいフォントファイルが展開後に発見されるように、上記の例では、次のオーバーライドを使用して以下の輸入を追跡する必要がある@fa-font-path: "/public/fonts";
CAK2

56

適切なフォントパスを設定する必要があります。例えば

my-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;
}

3
sassも同じです。パス../assets/font-awesome/fontsは私のために働きます。ありがとう。
アンドレイ

16

私の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');

12

ビルドプロセスの一部としてファイルをコピーする必要があります。たとえば、npm postinstallスクリプトを使用してファイルを正しいディレクトリにコピーできます。

"postinstall": "cp -R node_modules/font-awesome/fonts ./public/"

一部のビルドツールには、既存のfont-awesomeパッケージがあります。たとえば、webpackにはfont-awesome-webpackがあり、シンプルにできますrequire('font-awesome-webpack')


11

webpackとscssの使用:

npmを使用してfont-awesomeをインストールします(https://fontawesome.com/how-to-useのセットアップ手順を使用)

npm install @fortawesome/fontawesome-free

次に、copy-webpack-pluginを使用して、webpackのビルドプロセス中にnode_modulesからdistフォルダーにwebfontsフォルダーをコピーします。(https://github.com/webpack-contrib/copy-webpack-plugin

npm install copy-webpack-plugin

ではwebpack.config.jsは、configure コピーのWebPACK -プラグイン。注:デフォルトの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'}
        ])
    ]
}

最後に、あなたの中main.scssのファイル、どこfontawesomeを伝えるwebfontsにコピーし、あなたから欲しいSCSSファイルインポートされたフォルダnode_modulesを

$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` 

そしてfont-family、fontawesomeアイコンを使用するHTMLドキュメント内の目的の領域に以下を適用します。

 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)
    }

1
私にとってはうまく機能し、私はから@import "../node_modules/[...]"へのパスを調整する必要がありました@import "@/../node_modules/[...]"
エコグラフ

エイリアスをwebpack.config.jsに追加し、resolve: {alias: {'node_modules': path.join(__dirname, 'node_modules')}}次に@import "node_modules/[...]
Steven Almeroth

8

expressjsを使用して、それを公開します。

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

そして、あなたはそれを見ることができます: yourdomain.com/stylesheets/fontawesome/css/all.min.css


FontAwesomeは、npmパッケージをとしてインストールすることを推奨していますdevDependency。このソリューションが機能するためには(本番環境で)、パッケージを通常の依存関係としてインストールする必要がありますか?
John J. Camilleri

1
自分の質問に答えるために:はい、それは一緒にインストールする必要が--saveありません--save-dev
ジョンJ. Camilleri

5

次の<head></head>ようにタグの間に追加できます。

<head>
  <link href="./node_modules/font-awesome/css/font-awesome.css" rel="stylesheet" type="text/css">
</head>

またはあなたのあなたへの道は何でもnode_modules

編集(2017-06-26)-免責事項:より良い答えがあります。この方法は使用しないでください。この最初の回答の時点では、優れたツールはそれほど普及していませんでした。webpackやbrowserifyなどの現在のビルドツールでは、おそらくこの答えを使用しても意味がありません。私はそれを削除することができますが、私が持っているさまざまなオプションと可能なdosとnotsを強調することが重要だと思います。


16
ビルドにnode_modulesディレクトリを含めて直接参照したいと思う人はいないと思います。
Fabian Leutgeb 2016年

5
理解しましたが、それはオプションです。ソリューションに対する単一の答えはありません。:)あなたがバンドリングシステムを持っているなら、あなたは@import '../node_modules/...'他の答えが示したようにすることができます。
Con Antonakos 16年

1
他の回答と比較して、これが一番だと思います。あなたはまだ他の答えでnode_modulesを介して相対パスを参照しています。内のcssファイルの場所font-awesomeを変更する場合、他の回答と同じように調整またはメンテナンスが必要になります。違いは、この答えは翻訳やタスクを必要としないことです。インポートが期待される場所に正確に配置されるだけです。で<link>タグ。
北米の

3
単純なnpm forderは最低でも10 MB以上あり、ユーザーはなんらかの理由でプロジェクトにそのウェイトを追加したくありません。npmの全体のポイントは、開発中に支援し、ビルド後にプロダクションサイズを縮小/縮小することです。これが機能する場合でも、これは良いオプションだとは思わないでください。; )
T04435 2017年

私は次の免責事項を追加しました:この最初の回答の時点では、優れたツールはそれほど普及していませんでした。webpackやbrowserifyなどの現在のビルドツールでは、おそらくこの答えを使用しても意味がありません。私はそれを削除することができますが、私が持っているさまざまなオプションと可能なdosとnotsを強調することが重要だと思います。
Con Antonakos

3

私は現在ノードjsを学習しているので、この問題も発生しました。私がしたことは、まず第一に、npmを使用してfont-awesomeをインストールしました。

npm install font-awesome --save-dev

その後、CSSとフォントの静的フォルダーを設定します。

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

そしてhtmlで:

<link href="/fa/font-awesome.css" rel="stylesheet" type="text/css">

そしてそれはうまくいきます!


2

npmを使用している場合は、Gulp.jsビルドツールを使用して、SCSSまたはLESSからFont Awesomeパッケージをビルドできます。この例では、SCSSからコードをコンパイルします。

  1. Gulp.js v4をローカルに、CLI V2をグローバルにインストールします。

  2. npmを使用してgulp -sassというプラグインをインストールします。

  3. パブリックフォルダーにmain.scssファイルを作成し、次のコードを使用します。

    $fa-font-path: "../webfonts";
    @import "fontawesome/fontawesome";
    @import "fontawesome/brands";
    @import "fontawesome/regular";
    @import "fontawesome/solid";
    @import "fontawesome/v4-shims";
  4. アプリディレクトリにgulpfile.jsを作成し、これをコピーします。

    const { src, dest, series, parallel } = require('gulp');
    const sass = require('gulp-sass');
    const fs = require('fs');
    
    function copyFontAwesomeSCSS() {
       return src('node_modules/@fortawesome/fontawesome-free/scss/*.scss')
         .pipe(dest('public/scss/fontawesome'));
    }
    
    function copyFontAwesomeFonts() {
       return src('node_modules/@fortawesome/fontawesome-free/webfonts/*')
         .pipe(dest('public/dist/webfonts'));
     }
    
     function compileSCSS() { 
       return src('./public/scss/theme.scss')
         .pipe(sass()).pipe(dest('public/css'));
     }
    
     // Series completes tasks sequentially and parallel completes them asynchronously
     exports.build = parallel(
       copyFontAwesomeFonts,
       series(copyFontAwesomeSCSS, compileSCSS)
     );
  5. コマンドラインで「gulp build」を実行して、魔法を見てください。


0

私は同様の問題を抱えているこの質問に出くわし、別の解決策を共有しようと思いました:

Javascriptアプリケーションを作成している場合、フォントの素晴らしいアイコンをJavaScriptから直接参照することもできます。

まず、このガイドの手順を実行します

npm install @fortawesome/fontawesome-svg-core

次にあなたのjavascriptの中に:

import { library, icon } from '@fortawesome/fontawesome-svg-core'
import { faStroopwafel } from '@fortawesome/free-solid-svg-icons'

library.add(faStroopwafel)

const fontIcon= icon({ prefix: 'fas', iconName: 'stroopwafel' })

上記の手順の後、次のコマンドを使用してHTMLノード内にアイコンを挿入できます。

htmlNode.appendChild(fontIcon.node[0]);

アイコンを表すHTML文字列には次の方法でもアクセスできます。

fontIcon.html
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.