Fontawesome не работает, когда проект построен с ворчанием
Я использую шрифт библиотеки шрифтов. Он работает, когда проект не строится/не очищается с ворчанием.
Но когда я строю проект с хрюканьем, он не работает. Я получаю эту ошибку в консоли:.../fonts/fontawesome-webfont.woff? V = 4.0.3 404 (не найдено)
Я запустил проект с йоменом.
Это мой ref в index.html
<!-- build:css styles/fontawesome.css -->
<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
<!-- endbuild -->
Любые идеи, что может быть неправильным?
Обновление
Мне нужно скопировать папку /bower _components/font-awesome/fonts в dist/fonts. Это нужно сделать в файле grunt. Возможно, под вариантами "копировать"
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>',
src: [
'*.{ico,png,txt}',
'.htaccess',
'bower_components/**/*',
'images/{,*/}*.{gif,webp}',
'styles/fonts/*'
]
}, {
expand: true,
cwd: '.tmp/images',
dest: '<%= yeoman.dist %>/images',
src: [
'generated/*'
]
}]
},
Но я не уверен, где это включить.
Ответы
Ответ 1
У меня была та же проблема. Следующий код решил мою проблему.
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= config.app %>',
dest: '<%= config.dist %>',
src: [
'*.{ico,png,txt}',
'.htaccess',
'images/{,*/}*.webp',
'{,*/}*.html',
'styles/fonts/{,*/}*.*'
]
},{
expand: true,
dot: true,
cwd: 'bower_components/bootstrap/dist', // change this for font-awesome
src: ['fonts/*.*'],
dest: '<%= config.dist %>'
}]
}
}
Ответ 2
Если вы используете SASS в своем проекте, я нашел более простой способ, который не связан с изменением файла grunt, если кому-то интересно:
http://likesalmon.net/use-font-awesome-on-yeoman-angularjs-projects/
В основном, эти две строки находятся в верхней части файла main.scss, и шрифты должны работать.
$fa-font-path: "/bower_components/font-awesome/fonts/";
@import "font-awesome/scss/font-awesome";
Ответ 3
Если вы используете полный стек задачи grunt из yoman, тогда задача useminPrepare
создает комбинированную таблицу стилей из всех таблиц стилей, которые вы помещаете в комментарий build:css
, как и вы. (см. https://github.com/yeoman/grunt-usemin
для получения дополнительной информации). После завершения процесса сборки этот файл, несколько похожий на "vendor.234243.css", копируется в папку стилей. Вот почему путь к вашему шрифту уже недействителен. Есть как минимум 2 возможности решить эту проблему:
-
Вы можете удалить шрифт-awesom css из блока build:css
:
<link rel="stylesheet" href="bower_components/font-awesome/css/font-awesome.min.css">
<!-- build:css styles/fontawesome.css -->
this will be processed by useminPrepare
<!-- endbuild -->
-
Скопируйте шрифты folder
в качестве дочернего элемента в папку styles
с помощью дополнительной функции grunt в файле grunt.
Ответ 4
Я смог устранить проблему, добавив следующее к copy.dist.files:
{
expand: true,
flatten: true,
src: 'bower_components/components-font-awesome/fonts/*',
dest: 'dist/fonts'
}
Ответ 5
это скопирует шрифты туда, где они вам нужны.
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>',
src: [
'*.{ico,png,txt}',
'.htaccess',
'images/{,*/}*.webp',
'{,*/}*.html',
'styles/fonts/{,*/}*.*'
]
}, {
expand: true,
dot: true,
cwd: 'app/bower_components/fontawesome/fonts/',
src: ['*.*'],
dest: '<%= yeoman.dist %>/fonts'
}]
},
Ответ 6
Самый простой способ сделать это - перейти к собственному bower.json
и добавить свойство overrides
.
{
"name": "xxx",
"version": "x.x.x",
"dependencies": {
...,
"fontawesome": "~4.0.3"
},
"devDependencies": {
...,
},
"overrides": {
"fontawesome": {
"main": [
"./css/font-awesome.css"
]
}
}
}
Вам придется копировать шрифты из папки fontawesome/fonts
в свою папку app/fonts
вручную. Нет редактирования Gruntfile
или SCSS
или чего-либо еще.
Ответ 7
Мое решение заключалось в использовании подхода CDN:
<link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
Ни один из ответов не работал по какой-то причине.
Ответ 8
Как было сказано выше, это тоже очень хорошо работало для меня.
// Copies remaining files to places other tasks can use
copy: {
dist: {
files: [{
expand: true,
dot: true,
cwd: '<%= yeoman.app %>',
dest: '<%= yeoman.dist %>',
src: [
'*.{ico,png,txt}',
'.htaccess',
'*.html',
'scripts/components/{,*/}*.html',
'images/{,*/}*.{webp,png,jpg,jpeg,gif}',
'fonts/*',
'styles/fonts/{,*/}*.*',
'services/{,*/}*.json',
'services/mocks/{,*/}*.json'
]
}, {
expand: true,
cwd: '.tmp/images',
dest: '<%= yeoman.dist %>/images',
src: ['generated/*']
}, {
expand: true,
cwd: '.tmp/concat/scripts',
dest: '<%= yeoman.dist %>/scripts',
src: '{,*/}*.js'
}, {
expand: true,
cwd: '.tmp/concat/styles',
dest: '<%= yeoman.dist %>/styles',
src: '{,*/}*.css'
}, {
expand: true,
cwd: '<%= yeoman.app %>',
src: 'styles/Bootstrap/fonts/bootstrap/*',
dest: '<%= yeoman.dist %>'
}, {
expand: true,
cwd: 'bower_components/font-awesome/fonts/',
src: ['*.*'],
dest: '<%= yeoman.dist %>/fonts'
}]
}
Ответ 9
Вот решение: fooobar.com/questions/87801/...
{
expand: true,
cwd: '<%= yeoman.app %>/bower_components/font-awesome',
src: 'fonts/*',
dest: '<%= yeoman.dist %>'
}
Ответ 10
Я не знаю, что я делал неправильно, но ни один из предлагаемых решений не работал у меня. Независимо от того, что я пробовал, выпуск (распространение) не отображал значки.
В итоге я использовал следующие компоненты: https://github.com/philya/font-awesome-polymer-icons-generator и https://github.com/philya/font-awesome-polymer-icons
шрифт-устрашающий-полимер-иконки-генератор
Примечание: требуется python
Он позволяет создавать шрифт-удивительный набор значков SVG для значков (вы используете) в своем проекте.
В качестве примера, скажем, мне нужны значки code, line-chart, github-alt
в моих проектах, тогда я бы сгенерировал их так:
./makefaicons.py myappname code line-chart github-alt
Это создает файл build/myappname-icons.html
. Затем этот файл необходимо импортировать в мой компонент, как и любой другой компонент:
<link rel="import" href="<pathToFile>/myappname-icons.html">
то я могу получить шрифт-awesome иконки так:
<core-icon icon="myappname:line-chart"></core-icon>
то есть. Я префиксую обычное шрифтовое имя с именем, которое я дал, когда создал набор значков.
шрифты устрашающих-полимерно-иконка
Вы также можете просто импортировать готовый полный набор шрифтов-удивительных значков:
bower install font-awesome-polymer-icons
Имейте в виду, что это добавляет 300 + КБ к вашему размеру распространения, и автор отмечает, что он не рекомендуется для использования в производстве.
Ответ 11
Если вы работаете с SailsJS и Bower, я разработал решение, которое исправляет проблемы шрифтов Fontawesome и Bootstrap.
Ответ 12
Я отредактировал свой файл Gruntfile.js следующим образом:
//...
copy: {
dist: {
files: [//... {
expand: true,
dot: true,
cwd: 'bower_components/font-awesome/fonts/',
src: ['*.*'],
dest: '<%= yeoman.dist %>/fonts'
}]
},
app: {
files: [{
expand: true,
dot: true,
cwd: 'bower_components/font-awesome/fonts/',
src: ['*.*'],
dest: '<%= yeoman.app %>/fonts'
}]
}, //...
}
//...
grunt.registerTask('serve', 'Compile then start a connect web server', function (target) {
if (target === 'dist') {
return grunt.task.run(['build', 'connect:dist:keepalive']);
}
grunt.task.run([
'clean:server',
'wiredep',
'copy:app', // Added this line
'concurrent:server',
'autoprefixer:server',
'connect:livereload',
'watch'
]);
});
Я использую yoman 1.4.7 и его генератор angular. Очень важно добавить копию: приложение и не только скопировать задачу dist (как указано выше). Если вы не включаете приложение copy: при входе grunt serve
, он не будет работать. С копией: dist вы рассматриваете только grunt serve:dist
Ответ 13
У меня была та же проблема. Я посмотрел файл bower.json для font-awesome и нашел это:
{
"name": "font-awesome",
"description": "Font Awesome",
"keywords": [],
"homepage": "http://fontawesome.io",
"dependencies": {},
"devDependencies": {},
"license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
"main": [
"less/font-awesome.less",
"scss/font-awesome.scss"
],
"ignore": [
"*/.*",
"*.json",
"src",
"*.yml",
"Gemfile",
"Gemfile.lock",
"*.md"
]
}
В "main" массиве не было ссылки на "font-awesome.css". Возможно, как и я, вы не используете SASS или LESS для стилизации. Поэтому ни один стиль не добавляется для шрифтов. Я изменил json файл следующим образом:
{
"name": "font-awesome",
"description": "Font Awesome",
"keywords": [],
"homepage": "http://fontawesome.io",
"dependencies": {},
"devDependencies": {},
"license": ["OFL-1.1", "MIT", "CC-BY-3.0"],
"main": [
"less/font-awesome.less",
"scss/font-awesome.scss",
"css/font-awesome.css",
"fonts/fontawesome-webfont.tff",
"fonts/fontawesome-webfont.woff",
"fonts/fontawesome-webfont.woff2"
],
"ignore": [
"*/.*",
"*.json",
"src",
"*.yml",
"Gemfile",
"Gemfile.lock",
"*.md"
]
}
Я сохранил и запустил сервировку grunt, и теперь появляются мои значки с расширением шрифта.
Надеюсь, что это поможет.
Ответ 14
Для тех, кто использует Google App Engine
, для меня работало следующее:
Добавить в Gruntfile.js
:
copy: {
build_font_awesome: {
files: [
{
expand: true,
flatten: true,
src: 'vendor/components-font-awesome/fonts/*',
dest: '<%= build_dir %>/fonts'
}
]
},
compile_font_awesome: {
files: [
{
expand: true,
flatten: true,
src: 'vendor/components-font-awesome/fonts/*',
dest: '<%= compile_dir %>/fonts'
}
]
}
}
Я использую LESS, поэтому я импортировал font-awesome.less
, добавив это в мой файл main.less
.
@import '../../vendor/components-font-awesome/less/font-awesome.less';
Затем я добавил это в мой app.yaml
файл.
handlers:
- url: /fonts
static_dir: static/fonts
Ответ 15
Привет, основная проблема заключается в том, что файлы шрифтов, требуемые шрифтом-awesome css, не копируются после запуска задачи grunt, и вы можете получить 404 не найденную ошибку. То же самое можно проверить, если вы откроете свой режим разработки Chrome и посмотрите вкладку consoe или network. Такая же проблема может возникнуть и для бутстрапа.
Следовательно, нам нужно изменить задачу grunt, чтобы скопировать все файлы шрифтов.
Добавьте отдельную задачу копирования для файлов шрифтов.
copy: {
dist: { .....
},
fonts: {
expand: true,
flatten: true,
cwd: '.',
src: ['bower_components/bootstrap/fonts/*', 'bower_components/font-awesome/fonts/*'],
dest: '<%= yeoman.dist %>/fonts',
filter: 'isFile'
},
styles: { .......
}
}
Зарегистрируйте задачу "copy: fonts" в grunt.registerTask, чтобы она выполнялась во время сборки.