Как настроить выходной каталог файла шрифта из font-awesome-webpack в webpack?
Я только что установил font-awesome-webpack. Я импортирую его с помощью:require("font-awesome-webpack");
моя конфигурация webpack включает следующее в массив загрузчиков модулей:
{ test: /.woff(2)?(?v=[0-9].[0-9].[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" },
{ test: /.(ttf|eot|svg)(?v=[0-9].[0-9].[0-9])?$/, loader: "file-loader" }
проблема в том, что я получаю эту ошибку в консоли разработчика:
localhost/:1 GET http://localhost/mysite/app/db812d8a70a4e88e888744c1c9a27e89.woff2
localhost/:1 GET http://localhost/mysite/app/a35720c2fed2c7f043bc7e4ffb45e073.woff
localhost/:1 GET http://localhost/mysite/app/a3de2170e4e9df77161ea5d3f31b2668.ttf 404 (Not Found)
проблема в том, что эти файлы создаются в корне (в каталоге mysite). Как настроить так, чтобы эти woffs и ttf выводились в каталоге mysite/app?
8 ответов
недавно я хотел использовать шрифт awesome с webpack v1, я установил модуль npm font-awesome
не font-awesome-webpack
вы должны установить несколько погрузчиков до :
npm i css-loader file-loader style-loader url-loader
и добавьте их в свой webpack.конфиг.js:
module: {
loaders: [{
test: /\.css$/,
loader: 'style!css?sourceMap'
}, {
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream"
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file"
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml"
}]
}
теперь, если вы включаете в свой entry.js
:
require('font-awesome/css/font-awesome.css');
обычно вы можете использовать шрифт-awesome в своем шаблоне:
<i class="fa fa-times"></i>
эта суть помогла мне : https://gist.github.com/Turbo87/e8e941e68308d3b40ef6
от февраля. 2016 это, кажется, общий вопрос с webpack, поэтому я надеюсь, что это поможет. Если вы добавите это в загрузчик:'&name=./path/[hash].[ext]'
, который указывает, где искать эти файлы. Например:
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&mimetype=application/font-woff&name=./[hash].[ext]'
}
это помещает правильный URL-адрес шрифтов в сгенерированный файл CSS.
Я рекомендую этот метод при работе с чем-либо, кроме css/scss. Надеюсь, это поможет.
в дополнение к приведенным выше ответам, I Я должен был указать путь в выходных данных, чтобы заставить его работать так, чтобы указать размещенное местоположение, а не записывать активы в корневой путь:
output: {
filename: "./bundle.js",
path: “./client”
},
module: {
loaders[
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file?&name=./webpack-assets/[name]/[hash].[ext]"
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml&name=./webpack-assets/[name]/[hash].[ext]"
}
] // loaders
} // module
{
test: /\.(png|woff|woff2|eot|ttf|svg)(\?v=\d+\.\d+\.\d+)?$/,
loader: 'url-loader?limit=100000'
}
эта схема помогла мне
Это мой случай, потому что мой путь к скрипту, как показано ниже:
script(src='/javascripts/app.js')
Итак, я должен добавить ' & name./ javascripts / [хэш].[доб] для всех файлов шрифтов, как:
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./javascripts/[hash].[ext]"
}, {
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff&name=./javascripts/[hash].[ext]"
}, {
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/octet-stream&name=./javascripts/[hash].[ext]"
}, {
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file?name=./javascripts/[hash].[ext]"
}, {
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=image/svg+xml&name=./javascripts/[hash].[ext]"
}
Я font-awesome-webpack
работает на моем ПК, но он не будет работать на моем Mac. Я думаю, что мой компьютер все еще бросал 404s для.woff2, .woff, and .tiff, но значки отображаются правильно, поэтому я проигнорировал проблему.
мой Mac, однако, не будет отображать значки. Во время чтения этого Q&A я попробовал кучу вещей. Вот что привело к моему решению:
- на http://localhost:8080/View/ страница, я получал 404s, которые выглядели как ссылка ниже:
- я вошел http://localhost:8080/View/e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2 в браузер, и подтвердил 404.
- я пытался пойти http://localhost:8080/e6cf7c6ec7c2d6f670ae9d762604cb0b.woff2 (удаление дополнительного пути перед файлом шрифта), и смог получить доступ к файлу.
- я изменил ответ Павла, чтобы удалить
.
это сделало запрос файла относительным.
например, Поль предложил:--8-->
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&minetype=application/font-woff&name=./[hash].[ext]'
}
обратите внимание на &name
параметр, который использует ./[hash].[ext]
. Я уронил поводок!--3--> и теперь нет 404s (браузер правильно запрашивает файлы из корня сайта):
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: 'url-loader?limit=10000&minetype=application/font-woff&name=/[hash].[ext]'
}
Вывод: Если ваша точка входа не находится в вашем веб-корне, и вы можете получить доступ к файлам шрифтов в веб-корне, вам, вероятно, просто нужно использовать эту конфигурацию имени, чтобы исправить путь.
та же проблема.
исправлено с помощью приведенного ниже синтаксиса,
loader: "file?name=./fonts/[hash].[ext]"
шрифты-это имя каталога, замените его своим собственным именем каталога.
пример:
{
test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
loader: "url?name=/build/[hash].[ext]&limit=8192&mimetype=application/font-woff"
}
Как Примечание, я наткнулся на аналогичную ошибку, используя font-awesome-loader. Где каталог не будет установлен правильно, независимо от каких-либо изменений выше.
чтобы исправить это, параметр publicPath может быть добавлен к выходу:
output: { path: config.outputPath, filename: '[name].js', publicPath: '/assets/' },
папка / assets / будет изменена на то место, где вы фактически храните свои шрифты.
надеюсь, это поможет.