Кутовий-клі від css до scss


135

Я прочитав документацію , в якій сказано, що якщо я хочу використовувати, scssя повинен виконати таку команду:

ng set defaults.styleExt scss

Але коли я це роблю і роблю цей файл, я все одно отримую цю помилку в консолі:

styles.bundle.js:33Uncaught Error: Module build failed: Error: ENOENT:
no such file or directory, open
'/Users/Egen/Code/angular/src/styles.css'(…)

1
Це буде працювати лише для файлів, які ви генеруєте з цього моменту, я не думаю, що це виправить ті, які у вас вже є. Якщо ви git diffпобачите, що це змінилося.
— jonrsharpe

Але я ще не маю файлів. Просто хочу переключитися.
— Джеймі

як у вас ще немає файлів? Якщо ви створюєте новий проект, чому ви так налаштовуєте його?
— jonrsharpe

Тільки починаючи з angular2. Я намагаюся все зрозуміти.
— Джеймі

1
Якщо ви створюєте новий проект, зробіть так, ng new whatever --style=scss як показано в документах . Не дотримуйтесь інструкцій по налаштуванню існуючого проекту, якщо це не те, що ви робите!
— jonrsharpe

Відповіді:


267

Для кутових 6 перевірте офіційну документацію

Примітка. Для @angular/cliверсій, старих, ніж 6.0.0-beta.6використання ng setзамість ng config.

Для існуючих проектів

У існуючому проекті angular-cli, який був створений за типовими cssстилями, вам потрібно буде виконати кілька дій:

  1. Змініть розширення стилю за замовчуванням на scss

Змініть вручну .angular-cli.json(кутовий 5.x і старший) або angular.json(кутовий 6+) або запустіть:

ng config defaults.styleExt=scss

якщо ви отримаєте помилку: Value cannot be found.використовуйте команду:

ng config schematics.@schematics/angular:component.styleext scss

(* джерело: кутові параметри CLI SASS )

  1. Перейменуйте існуючі .cssфайли в .scss(наприклад, styles.css та app / app.component.css)

  2. Наведіть на CLI, щоб знайти styles.scss

Змінити вручну розширення файлів в apps[0].stylesвangular.json

  1. Вкажіть компоненти, щоб знайти нові файли стилів

Змініть styleUrlsв своїх компонентах відповідність новим іменам файлів

Для майбутніх проектів

Як зазначав @Serginho, ви можете встановити розширення стилю під час виконання ng newкоманди

ng new your-project-name --style=scss

Якщо ви хочете встановити за замовчуванням для всіх створених вами проектів, виконайте наступну команду:

ng config --global defaults.styleExt=scss

6
EDIT: Мені просто потрібно було оновити розробника в реальному часі. Працює правильно
— Крістіан Трайна

1
@ angular / cli 1.7.3: зміна defaults.styleExt з cssна scssна .angular-cli.jsonавтоматично створить файли scss для кожного нового компонента, що створюється в майбутньому.
— SimonHawesome

4
ng set defaults.styleExt scss для існуючих проектів
— smedasn

9
для кутових 6 слідкуйте за цим github.com/angular/angular-cli/wiki/stories-css-preprocessors
— hamilton.lima

22
@chovy для останньої кутової версії кліпу, у моєму випадку (6.0.7) використовуйте цю команду для існуючих проектів: ng config schematics.@schematics/angular:component.styleext scss як розповів @ hamilton.lima
— Farhan

52

Станом на ng6 це можна зробити за допомогою наступного коду, доданого до angular.jsonкореневого рівня:

Змінити вручну .angular.json:

"schematics": {
  "@schematics/angular:component": {
    "styleext": "scss"
  }
}

Я ще schematicsне на рівні коренів, але вклався всередині свого проекту в angular.json. Чи варто ігнорувати це і замість цього додати це на рівні кореня?
— mcheah

1
@mcheah, так, так само налаштована моя, і вона працює.
— Ерік Сойке

Я залишив своє вкладене всередині проекту, і, схоже, це теж добре працює, як FYI для тих, хто має те саме питання.
— mcheah

Після оновлення до ng6 останніх версій моя schematicsтепер вкладена також.
— Хосе Оріуела

Це, здається, для мене нічого не змінює. Ще не обробляє правила scss у файлах .css.
— chovy

34

Відкрийте файл angular.json

1.зміна від

"schematics": {}

до

"schematics": {
           "@schematics/angular:component": {
                   "styleext": "scss"       
             }  
  }
  1. змінити (у двох місцях)

"src/styles.css"

до

"src/styles.scss"

потім перевірте і перейменуйте всі .cssфайли та оновіть файли компонент компонента.Ursls від.css to .scss


4
Крок 1 можна виконати з CLI: ng config schematics.@schematics/angular:component.styleext scss як зазначено в офіційних документах: github.com/angular/angular-cli/wiki/stories-css-preprocessors
— Marian07

13

Для кутових 6,

ng config schematics.@schematics/angular:component.styleext scss

Примітка: @ схема / angular є типовою схемою для кутового CLI


11

Інтеграція препроцесорів CSS для кутових CLI: 6.0.3

Створюючи новий проект, ви також можете визначити, яке розширення потрібно для файлів стилів:

ng new sassy-project --style=sass

Або встановіть стиль за замовчуванням для існуючого проекту:

ng config schematics.@schematics/angular:component.styleext scss

Кутова документація CLI для всіх основних препроцесорів CSS


1
Invalid JSON character: "s" at 0:0.
— chovy

За кутовому CLI 6.0.8 ng config(як зазначено вище) є найкращим методом , але вам все ще потрібно перейменувати *.cssфайли *.scssі замінити посилання на angular.jsonна style.cssз style.scssі оновити всі посилання на файли компонентів в styleUrlsвласності нових імен. ... тоді це чудово працює!
— gkl

8

Для існуючих проектів :

У angular.jsonфайлі

  1. У buildчастині і в testчастині, замінити:

    "styles": ["src/styles.css"], від "styles": ["src/styles.scss"],

  2. Замінити:

    "schematics": {}, від "schematics": { "@schematics/angular:component": { "style": "scss" } },

Використання ng config schematics.@schematics/angular:component.styleext scssкоманди працює, але вона не розміщує конфігурацію в одному місці.

Перейменуйте свої .cssфайли у проекті на.scss

Для нового проекту ця команда виконує всі роботи:

ng n project-name --style=scss

Для глобальної конфігурації

Нові версії, схоже, не мають глобальної команди




3

Для користувачів розширень Nrwl, які стикаються з цією ниткою: всі команди перехоплюються Nx (наприклад, ng generate component myCompent) і передаються вниз до AngularCLI.

Команда для отримання SCSS працює в робочій області Nx:

ng config schematics.@nrwl/schematics:component.styleext scss


Блискучий, шукав цього. Дякую!
— Руан Петерсен

2

Можна застосувати грубу зміну сили. Це допоможе змінитись, але це довший процес.

Перейдіть у папку програми src / app

  1. Відкрийте цей файл: app.component.ts

  2. Змініть цей код styleUrls: ['./app.component.css']наstyleUrls: ['./app.component.scss']

  3. Збережіть і закрийте.

У тій же папці src / app

  1. Перейменуйте розширення для файлу app.component.css в (app.component.scss)

  2. Дотримуйтесь цієї зміни для всіх інших компонентів. (наприклад, домашня сторінка, контакт, тощо).

Angular.json файл конфігурації знаходиться поруч. Він розташований у корені проекту.

  1. Знайдіть і замініть css, змініть його на (scss) .

  2. Збережіть і закрийте.

Нарешті, перезавантажте своє ng serve -o.

Якщо компілятор скаржиться на вас, повторіть кроки ще раз.

Не забудьте уважно дотримуватися кроків у програмі app / src .


1

В останній версії Angular (v9) нижче потрібно додати код angular.json

  "schematics": {
    "@schematics/angular:component": {
      "style": "scss"
    }
  }

Можна додати за допомогою наступної команди:

ng config schematics.@schematics/angular:component.style scss

не працює для мене, і я намагаюся зробити це понад 10
— Кросс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.