Как добавить шрифт-awesome в проект Angular 2 + CLI



Я использую угловой 2+ и угловой CLI.



Как добавить font-awesome в мой проект?

660   18  

18 ответов:

после углового 2.0 окончательного выпуска,структура проекта Angular2 CLI была изменена - вы не нужны никакие файлы поставщика, без системы.js-только webpack. Так вы и делаете:

  1. npm install font-awesome --save

  2. в угловой-cli.JSON-файл, найдите styles[] массив и добавить шрифт-удивительный каталог ссылок здесь, как показано ниже:

    "apps": [
              {
                 "root": "src",
                 "outDir": "dist",
                 ....
                 "styles": [
                    "styles.css",
                    "../node_modules/bootstrap/dist/css/bootstrap.css",
                    "../node_modules/font-awesome/css/font-awesome.css" // -here webpack will automatically build a link css element out of this!?
                 ],
                 ...
             }
           ]
    
    ],
  3. поместите некоторые шрифты-удивительные значки в любой html-файл, который вы хочу:

     <i class="fa fa-american-sign-language-interpreting fa-5x" aria-hidden="true"> </i>    
  4. остановить приложение Ctrl + c затем повторно запустите приложение с помощью ng serve потому что наблюдатели предназначены только для папки src и angular-cli.json не наблюдается для изменений.

  5. наслаждайтесь своими удивительными значками!

если вы используете SASS, вы можете просто установить его через npm

npm install font-awesome --save

и импортировать его в свой /src/styles.scss С:

$fa-font-path: "../node_modules/font-awesome/fonts";
@import "../node_modules/font-awesome/scss/font-awesome.scss";

совет: когда это возможно, избегайте возиться с angular-cli инфраструктуры. ;)

верхний ответ немного устарел, и есть немного более простой способ.

  1. установить через npm

    npm install font-awesome --save

  2. в своем style.css:

    @import '~font-awesome/css/font-awesome.css';

    или в style.scss:

    $fa-font-path: "~font-awesome/fonts"; @import '~font-awesome/scss/font-awesome';

    Edit: как отмечено в комментариях, строка для шрифтов должна быть изменена на более новые версии на $fa-font-path: "../../../node_modules/font-awesome/fonts";

С помощью ~ будет заставь Сасс заглянуть в node_module. Лучше сделать это таким образом, чем с относительным путем. Причина в том, что если вы загружаете компонент на npm, и вы импортируете font-awesome внутри компонента scss, то он будет работать правильно с~, а не с относительным путем, который будет неправильным в этот момент.

этот метод работает для любого модуля npm, который содержит css. Он работает и для scss. если вы импортируете css в свои стили.scss это не сработает (а может и наоборот наоборот.) вот почему

есть 3 части, чтобы использовать шрифт-Удивительный в угловых проектах

  1. установка
  2. стиль (CSS / SCSS)
  3. использование в угловых

установка

установите из NPM и сохраните в свой пакет.json

npm install --save font-awesome

стилизация при использовании CSS

вставить в код стиль.css

@import '~font-awesome/css/font-awesome.css';

стилизация при использовании SCSS

вставить в свой стиль.СКС

$fa-font-path: "../node_modules/font-awesome/fonts";
@import '~font-awesome/scss/font-awesome.scss';

использование с простым угловым 2.4+ 4+

<i class="fa fa-area-chart"></i>

использование Угловое Материал

в вашем приложении.модуль.ts измените конструктор, чтобы использовать MdIconRegistry

export class AppModule {
  constructor(matIconRegistry: MatIconRegistry) {
    matIconRegistry.registerFontClassAlias('fontawesome', 'fa');
  }
}

и добавить MatIconModule на @NgModule импорт

@NgModule({
  imports: [
    MatIconModule,
    ....
  ],
  declarations: ....

}


теперь в любом файле шаблона вы можете сделать

<mat-icon fontSet="fontawesome" fontIcon="fa-area-chart"></mat-icon>

С Angular2 RC5 и angular-cli 1.0.0-beta.11-webpack.8 вы можете достичь этого с помощью импорта css.

просто установите шрифт awesome:

npm install font-awesome --save

а затем импортировать шрифт-awesome в один из ваших настроенных файлов стиля:

@import '../node_modules/font-awesome/css/font-awesome.css';

(файлы стилей настраиваются в angular-cli.json)

Вариант 1:

можно использовать angular-font-awesome НПМ модуль

npm install --save font-awesome angular-font-awesome

импорт модуля:

...
//
import { AngularFontAwesomeModule } from 'angular-font-awesome';
@NgModule({
  //...
  imports: [
    //...
    AngularFontAwesomeModule
  ],
  //...
})
export class AppModule { }

если вы используете Angular CLI, добавьте шрифт-awesome CSS в стили внутри angular-cli.json

"styles": [
    "styles.css",
    "../node_modules/font-awesome/css/font-awesome.css"
],

Примечание: при использовании препроцессора SCSS просто измените css для scss

Пример Использования:

<fa name="cog" animation="spin"></fa>

значение 2:

есть официальная история для этого

установите библиотеку font-awesome и добавьте зависимость в package.json

npm install --save font-awesome

С помощью CSS

чтобы добавить шрифт удивительные значки CSS в ваше приложение...

// in .angular-cli.json

"styles": [
  "styles.css",
  "../node_modules/font-awesome/css/font-awesome.css"
]

С помощью SASS

создать пустой файл _variables.scss на src/.

добавить следующее _variables.scss:

$fa-font-path : '../node_modules/font-awesome/fonts'; В styles.scss добавить следующее:

@import 'variables';
@import '../node_modules/font-awesome/scss/font-awesome';

тест

запустите ng serve для запуска вашего приложения в режиме разработки и перейдите к http://localhost:4200.

чтобы убедиться, что шрифт Awesome был настроен правильно, измените src/app / app.деталь.html к следующему...

<h1>
  {{title}} <i class="fa fa-check"></i>
</h1>

после сохранения этого файла вернитесь в браузер, чтобы увидеть значок шрифта Awesome рядом с приложением заглавие:.

также есть связанный с этим вопрос Угловое командной строки выводит шрифт-удивительный шрифт файлы корень Р как по умолчанию угловой cli выводит шрифты в dist root, который, кстати, не является проблемой вообще.

после некоторых экспериментов мне удалось получить следующие работы:

  1. установить с помощью npm:

    npm install font-awesome --save
    
  2. добавить угловой-cli-build.js file:

    vendorNpmFiles : [
        font-awesome/**/*.+(css|css.map|otf|eot|svg|ttf|woff|woff2)',
    ]
    
  3. добавить .HTML-код

    <link rel="stylesheet" href="vendor/font-awesome/css/font-awesome.min.css">
    

ключ должен был включать типы файлов шрифтов в angular-cli-build.файл JS

.+(css / css.map|otf / eot / svg / ttf|woff / woff2)

Edit: я использую angular ^4.0.0 и Electron ^1.4.3

если у вас есть проблемы с ElectronJS или аналогичный и имеют своего рода 404 ошибки, возможным обходным путем является uedit ваш webpack.config.js, добавив (и предположив, что у вас есть модуль узла font-awesome, установленный через npm или в пакете.JSON-файл):

new CopyWebpackPlugin([
     { from: 'node_modules/font-awesome/fonts', to: 'assets' },
     { from: 'src/assets', to: 'assets' }
]),

обратите внимание, что конфигурация webpack, которую я использую, имеет src/app/dist как выход, и, в dist,assets папка создается webpack:

// our angular app
entry: {
    'polyfills': './src/polyfills.ts',
    'vendor': './src/vendor.ts',
    'app': './src/app/app',
},

// Config for our build files
output: {
    path: helpers.root('src/app/dist'),
    filename: '[name].js',
    sourceMapFilename: '[name].map',
    chunkFilename: '[id].chunk.js'
},

Итак, в основном, что в настоящее время происходит:

  • Webpack копирует папку fonts в папку dev assets.
  • Webpack копирует папку dev assets в dist папку assets

теперь, когда процесс сборки будет завершен, приложение должно будет искать .scss файл и папка, содержащая значки, разрешающие их правильно. Чтобы решить их, я использовал это в своем webpack config:

// support for fonts
{
    test: /\.(ttf|eot|svg|woff(2)?)(\?[a-z0-9=&.]+)?$/,
    loader: 'file-loader?name=dist/[name]-[hash].[ext]'
},

наконец, в .scss файл, я импортирую шрифт-потрясающе .scss и определение пути шрифтов, который, опять же,dist/assets/font-awesome/fonts. Путь-это dist потому что в моем webpack.сконфигурируйте вывод.путь задается как helpers.root('src/app/dist');

так, в app.scss:

$fa-font-path: "dist/assets/font-awesome/fonts";
@import "~font-awesome/scss/font-awesome.scss";

обратите внимание, что таким образом, он будет определять путь шрифта (использовать позже .SCSS файл) и импортировать .scss файл с помощью ~font-awesome чтобы разрешить шрифт-удивительный путь в node_modules.

это довольно сложно, но это единственный способ, который я нашел, чтобы обойти проблему ошибки 404 с Electron.js

начиная с https://github.com/AngularClass/angular-starter, после тестирования много различных комбинаций конфигурации, вот что я сделал, чтобы заставить его работать с AoT.

как уже много раз говорилось, По моему app.component.scss:

$fa-font-path: "~font-awesome/fonts" !default;
@import "~font-awesome/scss/font-awesome";

затем в webpack.конфиг.js (на самом деле webpack.всех.js в стартовом пакете):

В разделе Плагины:

new CopyWebpackPlugin([
    { from: 'src/assets', to: 'assets' },
    { from: 'src/meta'},
    { from: 'node_modules/font-awesome/fonts', to: 'assets/fonts/' }
]),

В разделе Правила:

,
{
    test: /\.(eot|woff2?|svg|ttf)([\?]?.*)$/,
    use: 'file-loader?name=/assets/fonts/[name].[ext]'
}

есть много хороших ответов здесь. Но если вы попробовали все из них и все еще получаете квадраты вместо значков fontawesome, Проверьте свои правила css. В моем случае у меня было следующее правило:

* {
  font-family: Roboto-Light, Roboto, 'Helvetica Neue', sans-serif !important;
}

и он переопределяет шрифтов fontawesome. Просто замена * селектор body решить мою проблему:

body {
  font-family: Roboto-Light, Roboto, 'Helvetica Neue', sans-serif !important;
}

Угловое 6,

первый npm install font-awesome --save

добавить node_modules/font-awesome/css/font-awesome.css to угловое.json.

помните не добавить любые точки перед node_modules/.

этот пост описывает, как интегрировать Fontawesome 5 на Угловое 6 (Angular 5 и предыдущие версии также будут работать, но тогда вам придется настроить мои записи)

Вариант 1: добавьте css-файлы

Pro: каждый значок будет включен

Contra: каждый значок будет включен (больший размер приложения, потому что все шрифты включены)

добавить следующий пакет:

npm install @fortawesome/fontawesome-free-webfonts

потом добавить следующие строки для вашего углового.json:

"app": {
....
"styles": [
....
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fontawesome.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-regular.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-brands.css",
"node_modules/@fortawesome/fontawesome-free-webfonts/css/fa-solid.css"
],
...    
}

Вариант 2: угловой пакет

Pro: меньший размер приложения

Contra: вы должны включить каждый значок, который вы хотите использовать отдельно

используйте FontAwesome 5 угловой пакет:

npm install @fortawesome/angular-fontawesome

просто следуйте их документации, чтобы добавить значки. Они используют svg-значки, поэтому вам нужно только добавить svgs / значки, которые вы действительно используете.

используя LESS (не SCSS) и Angular 2.4.0 и стандартный Webpack (не угловой CLI, для меня работало следующее:

npm install --save font-awesome

и (в мое приложение.деталь.меньше):

@import "~font-awesome/less/font-awesome.less";

и, конечно, вам может понадобиться этот очевидный и интуитивно понятный фрагмент (в модуле.погрузчики в webpack.conf)

        {
            test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?(v=)?(\d+)(\.\d+)*)?$/,
            loader: 'file?name=graphics/[name].[ext]'
        },

загрузчик есть, чтобы исправить ошибки webpack такого рода

"Module parse failed: \node_modules\font-awesome\fonts\fontawesome-webfont.svg?v=4.7.0 Unexpected token (1:0)" 

и регулярное выражение соответствует этим svg-ссылкам (с или без версии спецификация.) В зависимости от настроек вашего webpack вам это может не понадобиться или вам может понадобиться что-то еще.

Я хотел использовать шрифт Awesome 5+ и большинство ответов сосредоточены на старых версиях

для нового шрифта Awesome 5 + угловой проект еще не выпущен, поэтому, если вы хотите использовать примеры, упомянутые на веб-сайте font awesome atm, вам нужно использовать обходной путь. (особенно fas, far классы вместо класса fa)

Я только что импортировал cdn в шрифт Awesome 5 в моих стилях.стиль CSS. Просто добавил Это в случае, если это поможет кому-то найти ответ быстрее, чем Я сделал :-)

код в стиле.css

@import "https://use.fontawesome.com/releases/v5.0.7/css/all.css";

Если по какой-то причине вы не можете установить пакет throw npm. Вы всегда можете редактировать индекс.html и добавить шрифт awesome CSS в голове. А потом просто использовал его в проекте.

для webpack2 используйте:

{
 test: /\.(png|jpe?g|gif|svg|woff|woff2|ttf|eot|ico)(\?(v=)?(\d+)(\.\d+)*)?$/,
                    loader: "file-loader"
}

вместо file-loader?name=/assets/fonts/[name].[ext]

Я потратил несколько часов, пытаясь получить последнюю версию FontAwesome 5.2.0, работающую с AngularCLI 6.0.3 и Material Design. Я следовал инструкциям по установке npm с сайта FontAwesome

их последние документы инструктируют вас установить, используя следующее:

npm install @fortawesome/fontawesome-free

после потери нескольких часов я, наконец, удалил его и установил Font awesome с помощью следующей команды (это устанавливает FontAwesome v4.7. 0):

npm install font-awesome --save

Теперь он отлично работает с помощью:

$fa-font-path: "~font-awesome/fonts" !default;
@import "~font-awesome/scss/font-awesome.scss";
<mat-icon fontSet="fontawesome" fontIcon="fa-android"></mat-icon>

добавьте его в свой пакет.JSON как "devDependencies" шрифт-удивительный : "номер версии"

перейдите в командную строку введите команду npm, которую вы настроили.

Comments

    Ничего не найдено.