#angular #angular-cli
#angular #angular-cli
Вопрос:
После обновления до Angular 11 я столкнулся с некоторыми проблемами, касающимися путей к ресурсам в моем проекте.
Я хочу знать правильный способ добавления ресурсов в угловые проекты.
Это
src: url('/assets/fonts/NunitoSans-Bold.woff') format('woff');
Или
src: url('assets/fonts/NunitoSans-Bold.woff') format('woff');
Или
src: url('../../../../assets/fonts/NunitoSans-Bold.woff') format('woff');
Кроме того, кто-то сказал мне, что если я использую относительный путь (третий), это вызовет проблемы в производственных сборках на сервере. Это правда? и если да, то почему это так?
Более того, можно подумать, что первый и второй примеры на самом деле не отличаются. Это не то, что Angular CLI
думает. Иногда он принимает только первый как действительный и выдает следующую ошибку при использовании второго варианта:
Error: ./src/app/app.component.scss
Module Error (from ./node_modules/@angular-devkit/build-angular/node_modules/postcss-loader/dist/cjs.js):
(Emitted value instead of an instance of Error) CssSyntaxError: /home/styles/kit/_nunitosans.scss:20:2: Can't resolve '../styles/kit/assets/fonts/NunitoSans-Bold.woff' in '/home/newsha/didex/didex-auth-front/src/app'
Моя ОС — Ubuntu 20.04.
Комментарии:
1. Newsha, Angular скопируйте папку «assets» в корень вашего проекта (папку, в которой «index.html » создается, поэтому вы не можете использовать
../../....
. Использование/assets/...
решений, которые не зависят от вашего «базового href», использованиеassets/...
, делает так, что если вы измените «базовый href» (например, у вас многоязычное приложение, а для испанского языка ваш базовый href —/es-ES
угловой, попробуйте найти из этого «href»
Ответ №1:
внутри angular.json у вас есть эта часть конфигурации:
"assets": [
"src/assets"
],
При запуске ng build —prod пути, которые вы указали здесь, также будут включены в окончательную сборку, поэтому вы сможете получить к ним доступ на сервере. Вы также можете добавить любые другие папки. Вот почему правильная форма указания на файлы внутри вашего приложения angular использует абсолютный путь, подобный этому: src: url(‘/assets/ fonts/ NunitoSans-Bold.woff’) формат (‘woff’);
Комментарии:
1. Я не уверен, что это полностью правильно, потому что при использовании обозначения абсолютного пути
/assets/fonts...
вы не позволяете браузеру добавлять базовый url. Более подходящим решением было бы использоватьassets/fonts...