노드 모듈에서 멋진 글꼴 아이콘을 사용하는 방법


111

을 사용하여 글꼴 멋진 4.0.3 아이콘을 설치했습니다 npm install.

노드 모듈에서 사용해야하는 경우 html 파일에서 어떻게 사용해야합니까?

적은 파일을 편집해야하는 경우 노드 모듈에서 편집해야합니까?


이것을하기위한 "올바른"방법을 알아 낸 적이 있습니까? 나는 현재 단지 gulp 작업을 사용하여 node_modules에서 내 공개 디렉토리로 물건을 복사하고 있습니다.
sjmeverett 2014

나는 ... 나중에 정자 구성 요소로 사용
Govan

답변:


106

다음으로 설치 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";

참고로이 작업을 수행해도 그렇게 많은 바이트를 절약 할 수는 없습니다. 어느 쪽이든, 2-3k 줄의 축소되지 않은 CSS를 포함하게 될 것입니다.

또한 /fonts/공용 디렉토리에 있는 폴더에서 글꼴 자체를 제공해야합니다 . 다음과 같이 간단한 꿀꺽 꿀꺽 작업으로 복사 할 수 있습니다.

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

9
글꼴도 글꼴 폴더에 제공되어야한다는 점이 더 강조 될 필요가 있습니다 ...이 간단한 작은 일을 알아 내려고 한 시간을 보냈을 것입니다.
Alex J

3
변수 fa-font-path를 원하는 위치 로 설정하여 글꼴 정적 경로를 조정할 수도 있습니다.
zusatzstoff

위의 예에서는 @fa-font-path: "/public/fonts";
gulp

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는 나를 위해 작동합니다. 감사.
Andrey

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/"

일부 빌드 도구에는 이미 존재하는 멋진 글꼴 패키지가 있습니다. 예를 들어, webpack에는 font-awesome-webpack 이있어 require('font-awesome-webpack').


11

웹팩 및 scss 사용 :

npm을 사용하여 font-awesome을 설치 하십시오 (https://fontawesome.com/how-to-use 의 설정 지침 사용 ).

npm install @fortawesome/fontawesome-free

다음으로 copy-webpack-plugin을 사용하여 웹 폰트 를 복사합니다 . 에서 폴더 node_modules 당신에게 DIST 당신의 웹팩 빌드 과정에서 폴더. ( https://github.com/webpack-contrib/copy-webpack-plugin )

npm install copy-webpack-plugin

에서 webpack.config.js , 구성 복사 웹팩 - 플러그인 . 참고 : 기본 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에서 를 Where 파일, fontawesome에게 웹 글꼴 에 복사 된 폴더에는에서 원하는 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-familyfontawesome 아이콘을 사용하려는 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/[...]"
mecograph dec

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. 카밀레

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와 같은 현재 빌드 도구를 사용하면이 답변을 사용하는 것이 이치에 맞지 않을 것입니다. 삭제할 수는 있지만 다양한 옵션과 할 수있는 일과 할 수없는 일을 강조하는 것이 중요하다고 생각합니다.


16
아무도 node_modules 디렉토리를 빌드에 포함하고 직접 참조하고 싶지 않을 것이라고 생각합니다.
Fabian Leutgeb

5
이해하지만 여전히 선택 사항입니다. 솔루션에 대한 단일 답변은 없습니다. :) 번들링 시스템이 있다면 @import '../node_modules/...'다른 답변이 표시된 것처럼 할 수 있습니다 .
콘 Antonakos

1
다른 답변에 비해 이것이 최고라고 생각합니다. 다른 답변에서 node_modules를 통해 상대 경로를 여전히 참조하고 있습니다. 내 CSS 파일의 위치가 font-awesome변경되면 다른 답변만큼 조정 또는 유지 관리가 필요합니다. 차이점은이 답변에는 번역이나 작업이 필요하지 않습니다. 가져 오기를 예상해야하는 위치에 정확히 배치합니다. A의 <link>태그입니다.
northamerican

3
간단한 npm forder는 최소 10MB 이상을 가지며 어떤 사용자도 어떤 이유로 든 프로젝트에 해당 가중치를 추가하고 싶어하지 않습니다. npm의 요점은 개발 중에 돕고 빌드 후 프로덕션 크기를 최소화 / 축소하는 것입니다. 작동하더라도 이것이 좋은 선택이라고 생각하지 마십시오. ; )
T04435

다음 고지 사항을 추가했습니다.이 원래 답변 당시에는 좋은 도구가 널리 보급되지 않았습니다. webpack 또는 browserify와 같은 현재 빌드 도구를 사용하면이 답변을 사용하는 것이 이치에 맞지 않을 것입니다. 삭제할 수는 있지만 다양한 옵션과 할 수있는 일과 할 수없는 일을 강조하는 것이 중요하다고 생각합니다.
Con Antonakos

3

현재 노드 js를 배우고 있기 때문에이 문제도 발생했습니다. 내가 한 모든 것은 우선 npm을 사용하여 멋진 글꼴을 설치하는 것입니다.

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

그런 다음 자바 스크립트 내부 :

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.