Кутовий-клі від 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.