Я новичок в Angular, и я иду из сообщества Ember. Пытается использовать новый Angular -CLI, основанный на Ember-CLI.
Мне нужно знать лучший способ обработки SASS в новом проекте Angular 2. Я попытался использовать репозиторий ember-cli-sass
, чтобы увидеть, будет ли он воспроизводиться, поскольку ряд основных компонентов Angular -CLI запущены модулей Ember-CLI,
Он не работал, но снова не уверен, что я просто что-то неправильно сконфигурировал.
Также, как лучше всего организовать стили в новом проекте Angular 2? Мне было бы неплохо иметь файл sass в той же папке, что и компонент.
Ответ 1
Когда вы создаете свой проект с помощью angular cli, попробуйте следующее:
ng new My_New_Project --style=sass
Это генерирует все ваши компоненты с заранее определенными sass файлами.
Если вы хотите, чтобы синтаксис scss создавал ваш проект, выполните следующие действия:
ng new My_New_Project --style=scss
Если вы изменяете свой существующий стиль в своем проекте
ng set defaults.styleExt scss
Cli обрабатывает остальную часть.
Ответ 2
Новые проекты
Для новых проектов мы можем установить опции --style=sass
или --style=scss
в соответствии с желаемым вкусом SASS/SCSS
-
Использовать синтаксис SASS
ng new project --style=sass
-
Использовать синтаксис SCSS
ng new project --style=scss
затем установите node-sass
,
npm install node-sass --save-dev
Обновление существующих проектов
Чтобы скомпилировать sass файлы с node-sass
angular-cli
, мне пришлось запустить
npm install node-sass --save-dev
который устанавливает node-sass
. Тогда
чтобы установить стиль styleExt по умолчанию в sass
(или)
измените styleExt
на sass
или scss
для желаемого синтаксиса в .angular-cli.json
,
-
для синтаксиса SASS
"defaults": {
"styleExt": "sass",
}
-
для синтаксиса SCSS
"defaults": {
"styleExt": "scss",
}
Хотя он породил ошибки компилятора.
ERROR in multi styles
Module not found: Error: Can't resolve '/home/user/projects/project/src/styles.css' in '/home/user/projects/project'
@ multi styles
который был исправлен путем изменения линий .angular-cli.json
,
"styles": [
"styles.css"
],
либо,
-
для синтаксиса SASS
"styles": [
"styles.sass"
],
-
для синтаксиса SCSS
"styles": [
"styles.scss"
],
Ответ 3
Цитата из официальных сообщений github repo здесь -
Чтобы использовать только одну установку, например
npm install node-sass
и переименуйте файлы .css в свой проект в .scss или .sass. Они будут скомпилированы автоматически. Аргумент параметров Angular2App имеет параметры sassCompiler, lessCompiler, stylusCompiler и compassCompiler, которые передаются непосредственно в соответствующие препроцессоры CSS.
Смотрите здесь
Ответ 4
Как сказал Мерткан, лучший способ использовать scss - создать проект с помощью этой опции:
ng new My_New_Project --style=scss
Angular -cli также добавляет возможность изменить препроцессор css по умолчанию после создания проекта с помощью команды:
ng set defaults.styleExt scss
Для получения дополнительной информации вы можете посмотреть здесь свою документацию:
https://github.com/angular/angular-cli
Ответ 5
Скажите angular -cli, чтобы всегда использовать scss по умолчанию
Чтобы избежать передачи --style scss
каждый раз при создании проекта, вы можете настроить свою конфигурацию по умолчанию angular -cli глобально со следующей командой:
ng set --global defaults.styleExt scss
Обратите внимание, что некоторые версии angular -cli содержат ошибку с чтением указанного выше глобального флага (см. Ссылку). Если ваша версия содержит эту ошибку, сгенерируйте ваш проект с помощью:
ng new project --style=scss
Ответ 6
Я заметил очень неприятный прием при переходе к scss файлам!!! Один ДОЛЖЕН перейти от простого:
styleUrls: ['app.component.scss']
до
styleUrls: ['./app.component.scss']
который ng делает, когда вы создаете новый проект, но, похоже, не в том случае, когда создается проект по умолчанию. Если вы видите ошибки разрешения во время сборки ng, проверьте эту проблему. Мне потребовалось всего 1 час.
Ответ 7
Лучше всего было бы ng new myApp --style=scss
Затем Angular CLI создаст любой новый компонент с scss для вас...
Обратите внимание, что использование scss
не работает в браузере, как вы, вероятно, знаете.. поэтому нам нужно что-то скомпилировать в css
, по этой причине мы можем использовать node-sass
, установить его, как показано ниже:
npm install node-sass --save-dev
и вы должны быть добрыми!
Если вы используете webpack, читайте здесь:
Командная строка внутри папки проекта, где ваш существующий package.json: npm install node-sass sass-loader raw-loader --save-dev
В webpack.common.js
найдите "rules:" и добавьте этот объект в конец массива правил (не забудьте добавить запятую в конец предыдущий объект):
{
test: /\.scss$/,
exclude: /node_modules/,
loaders: ['raw-loader', 'sass-loader'] // sass-loader not scss-loader
}
Затем в вашем компоненте:
@Component({
styleUrls: ['./filename.scss'],
})
Если вам нужна глобальная поддержка CSS, то на компоненте верхнего уровня (вероятно, app.component.ts) удалить инкапсуляцию и включить SCSS:
import {ViewEncapsulation} from '@angular/core';
@Component({
selector: 'app',
styleUrls: ['./bootstrap.scss'],
encapsulation: ViewEncapsulation.None,
template: ``
})
class App {}
из Angular стартер здесь.