Как импортировать файлы sass в angular 6

Я создал новый проект angular с помощью sass, и я создал папку с именем sass, которая содержит файл с именем _variables.scss,

в компоненте приложения я попытался импортировать такие переменные.

@import 'variables'

когда я запускаю ng serve, я получаю следующую ошибку:

./src/app/app.component.scss Ошибка сборки модуля:

@import 'variables'
^
      File to import not found or unreadable: variables.
      in C:\Users\Bonge\Documents\Projects\movies_database\movies-client\src\app\app.component.scss (line 1, column 1)

Обратите внимание, что я добавил в angular.json следующее:

"stylePreprocessorOptions": { "includePaths": [ "src/", "src/sass/" ]

Структура каталогов просто угловое стартовое приложение:

|- src/
    |- sass/
        |- _variables.scss
        |- _mixins.scss
        |- styles.scss

Тем не менее, я получаю ту же ошибку: что я здесь делаю не так? любая помощь

Пожалуйста, разместите структуру каталогов, если это возможно.

lealceldeiro 15.06.2018 17:34

@lealceldeiro проверьте это просто новое приложение angular для начинающих, ничего особенного

Hot Zellah 15.06.2018 17:37

Попробуйте переименовать src/styles.css в src/styles.scss и включить в этот файл другие стили в каталог src/sass. Если вам нравится, посмотрите этот мой Проект GitHub, в котором я делаю то, что вы пытаетесь сделать сейчас. Обратите внимание, что в файле angular.json я установил "styles": [ "src/styles.scss" ],

lealceldeiro 15.06.2018 17:42

@lealceldeiro Я добавил все остальное. Я могу импортировать весь этот материал в styles.css, как насчет компонента?

Hot Zellah 15.06.2018 18:03

Я понимаю. См. ответ я отправил.

lealceldeiro 15.06.2018 18:17
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
38
5
37 522
2

Ответы 2

В новом angular v6 импорт файлов sass немного отличается от предыдущей версии.

Мне просто нужно было импортировать вот так (в таблице стилей компонентов)

@import "~src/sass/variables";    // note: without file extension

Теперь все работает нормально

Спасибо всем за помощь

Теперь я запутался в этом. Предполагается, что ~ относится к папке node_modules.

lealceldeiro 15.06.2018 18:44

этот угловой cli v6 совсем другой, проверьте это

Hot Zellah 15.06.2018 19:12

Большое спасибо. Большинство статей в Интернете основаны на более старой версии Angular, и они не работали. Большое спасибо за это

Alf Moh 25.07.2018 10:33

это не совсем правильно. использование ~ предполагает, что это папка node_modules. Если у вас есть другая папка за пределами src, решение @Andy Braham правильное

Johansrk 13.03.2019 16:04

Это действительно помогло мне, потому что мне нужно было использовать абсолютный путь внутри источника шрифта с помощью url (). У меня уже был настроен stylePreprocessorOptions, и он не работал внутри url (). Использование префикса ~ src / вместо этого отсортировало все!

Geoff Davids 22.01.2020 13:33

Я понимаю, что это более старый вопрос, но он продолжает появляться в поисках, поэтому я считаю, что обновление в порядке. Существует способ определить ваши собственные пути импорта для SASS, например для библиотек node_modules, все, что вам нужно сделать, это сделать запись stylePreprocessorOptions в разделе options файла angular.json. Необязательно включать все с помощью src\sass

angular.json

"options": {
  "outputPath": "dist/App",
  "index": "src/index.html",
  "main": "src/main.ts",
  "polyfills": "src/polyfills.ts",
  "tsConfig": "src/tsconfig.app.json",
  "assets": [
    "src/favicon.ico",
    "src/assets"
  ],
  "styles": [
    "src/sass/styles.scss"
  ],
  "stylePreprocessorOptions": {
    "includePaths": [
      "src/sass"
    ]
  },
  "scripts": []
},

Затем в своих стилях вы можете просто импортировать их, используя

styles.sass

Примечание. Не включайте расширение файла или начальный ~.

@import 'variables'; // Imports from src/sass
@import 'mixins;

Работает как шарм !! Большое спасибо

Jagpreet Singh 31.10.2018 17:38

ты великолепен

Johansrk 13.03.2019 16:01

Это обновлено для Angular 7? Я не знаю точно, в какой раздел "параметры" его поместить (сборка? Сервер? Тест? Все?)

RTYX 23.05.2019 17:11

@RTYX внутри проектов. <youproject> .architect.build.options

Sebastiandg7 04.09.2019 18:39

Моя проблема была связана с созданием универсального приложения Angular. После использования ng add @nguniversal/express-engine --clientProject MYPROJECT в существующем проекте и последующего запуска npm run build:ssr я получил ошибку импорта. Решением было добавить "stylePreprocessorOptions": { "includePaths": [ "src/<myStylesFolder>" ] }, в разделы options вновь добавленного определения server. НИКАКИХ ДРУГИХ ИЗМЕНЕНИЙ НЕ ТРЕБУЕТСЯ.

Shy Agam 10.09.2019 17:36

Другие вопросы по теме