Я использую Angular2 beta.15 и webpack 1.12.14.Angular2/Webpack: как загружать шрифты, импортированные внутри файлов css?
У меня есть один .css и один .scss-файл в app.component.ts
как глобальные шаблоны.
@Component({
selector: 'my-app',
templateUrl: 'app/app.component.html',
styles: [
require('../stylesheets/css/main.min.css'),
require('../sass/example.scss')
],
encapsulation: ViewEncapsulation.None,
})
И внутри .css
файл, некоторые шрифты импортируются, как показано ниже,
@font-face {
font-family: 'Helvetica Neue';
src: url(fonts/light/helvetica-neue-light.eot) format("eot"),
url(fonts/light/helvetica-neue-light.woff2) format("woff2"),
url(fonts/light/helvetica-neue-light.woff) format("woff"),
url(fonts/light/helvetica-neue-light.ttf) format("truetype");
font-weight: 300;
font-style: normal
}
В webpack.config.js
, у меня есть погрузчики для .css
, .scss
, и шрифты, как показано ниже
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader
},
{
test: /.(png|woff(2)?|eot|ttf|svg)(\?[a-z0-9=\.]+)?$/,
loader: 'url-loader'
},
{
test: /\.css$/,
loaders: ['style', 'css']
},
When Я запустил webpack -display-error-details
, нет никакой ошибки, но когда я запустил сервер для запуска моего приложения, я получил ошибку, как показано ниже.
EXCEPTION: Error during instantiation of Token Promise<ComponentRef>!.
ORIGINAL EXCEPTION: Expected 'styles' to be an array of string
Если изменить CSS загрузчик
{
test: /\.css$/,
loader: 'url-loader' //or use 'raw-loader'
},
эти исключения исчезли, и приложение было начать, но я получил некоторые 404 запросов об ошибке для этих шрифтов в консоли браузера, они не загружены в все. Итак, не могли бы вы дать мне несколько указателей? Я подозреваю, что что-то не так в настройках моего загрузчика.
Не могли бы вы попытаться связать загрузчик url с загрузочным загрузчиком для CSS? '['raw-loader', 'url-loader']' –
@SeanLarkin Он работает! Замечательно! Не могли бы вы объяснить, что такое использование 'raw-loader'? Я не могу найти документ для этого. –
Да, я создам ответ с некоторым объяснением. –