Css'den scss'ye açısal-cli


135

Kullanmak istersem aşağıdaki komutu çalıştırmam gerektiğini söyleyen belgeleri okudum scss:

ng set defaults.styleExt scss

Ancak bunu yaptığımda ve o dosyayı yaptığımda, konsolumda hala şu hatayı alıyorum:

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

1
Bu sadece o noktadan itibaren oluşturduğunuz dosyalar için işe yarar, zaten sahip olduklarınızı düzelteceğini sanmıyorum. Eğer git diffbunu nelerin değiştiğini göreceksiniz.
jonrsharpe

Ama henüz dosyam yok. Sadece değiştirmek istiyorum.
Jamie

nasıl henüz dosyanız yok? Yeni bir proje oluşturuyorsanız, neden bu şekilde yapılandırıyorsunuz?
jonrsharpe

Sadece açısal2 ile başlayalım. Her şeyi anlamaya çalışıyorum.
Jamie

1
Yeni bir proje oluşturuyorsanız ng new whatever --style=scss , belgelerde gösterildiği gibi yapın . Yaptığınız şey bu değilse, mevcut bir projeyi yapılandırma talimatlarını takip etmeyin!
jonrsharpe

Yanıtlar:


267

Angular 6 için Resmi belgelere bakın

Not: For @angular/clidaha eski sürümleri 6.0.0-beta.6kullanıma ng setyerine ng config.

Mevcut projeler için

Varsayılan cssstillerle kurulmuş mevcut bir açısal klibi projesinde birkaç şey yapmanız gerekecek:

  1. Varsayılan stil uzantısını şu şekilde değiştirin: scss

.angular-cli.json(Angular 5.x ve daha eski) veya angular.json(Angular 6+) içinde manuel olarak değiştirin veya çalıştırın:

ng config defaults.styleExt=scss

Bir hata alırsanız: Value cannot be found.şu komutu kullanın:

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

(* kaynak: Açısal CLI SASS seçenekleri )

  1. Mevcut .cssdosyalarınızı olarak yeniden adlandırın .scss(yani, styles.css ve app / app.component.css)

  2. Styles.scss bulmak için CLI'yi işaret edin

İçindeki dosya uzantılarını manuel olarak değiştirin apps[0].styles.angular.json

  1. Yeni stil dosyalarınızı bulmak için bileşenleri işaret edin

styleUrlsYeni dosya adlarınızla eşleşecek şekilde bileşenlerinizi değiştirin

Gelecek projeler için

@Serginho'nun bahsettiği gibi, ng newkomutu çalıştırırken stil uzantısını ayarlayabilirsiniz.

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

Gelecekte oluşturacağınız tüm projeler için varsayılanı ayarlamak isterseniz aşağıdaki komutu çalıştırın:

ng config --global defaults.styleExt=scss

6
DÜZENLEME: Sadece gerçek zamanlı oluşturucuyu yenilemem gerekiyordu. Doğru çalışıyor
Cristian Traìna

1
@ açısal / cli 1.7.3: den defaults.styleExt değişen cssiçin scssde .angular-cli.jsongelecekte otomatik olarak oluşturulan her yeni bileşen için SCSS dosyaları oluşturur.
SimonHawesome

4
ng set defaults.styleExt scss mevcut projeler için
smedasn


22
En son açısal cli sürümü için @chovy, benim durumumda (6.0.7) bu komutu mevcut projeler için kullanın: ng config schematics.@schematics/angular:component.styleext scss @ hamilton.lima tarafından söylendiği gibi
Farhan

52

Ng6'dan itibaren bu, aşağıdaki kodun angular.jsonkök seviyesinde eklenmesiyle gerçekleştirilebilir :

El ile değiştir .angular.json:

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

schematicsKök seviyesinde değil, projemin içinde iç içe geçtim angular.json. Bunu görmezden gelmeli ve bunun yerine bunu kök seviyesinde eklemeli miyim?
mcheah

1
@mcheah, evet benimki de böyle kuruluyor ve çalışıyor.
Eric Soyke

Benimkini projenin içinde bıraktım ve bu da iyi çalışıyor gibi görünüyor, aynı soruyu soran herkes için bir FYI gibi.
mcheah

En son ng6 sürümlerine güncelledikten sonra schematics, artık benim de iç içe geçmiş durumda.
Jose Orihuela

Bu benim için hiçbir şeyi değiştirmiyor gibi görünüyor. Hala .css dosyalarında scss kuralları işlenmiyor.
chovy

34

Angular.json dosyasını açın

1. değiştir

"schematics": {}

için

"schematics": {
           "@schematics/angular:component": {
                   "styleext": "scss"       
             }  
  }
  1. (iki yerde)

"src/styles.css"

için

"src/styles.scss"

ardından tüm .cssdosyaları kontrol edip yeniden adlandırın ve component.ts dosyalarını styleUrls dosyasını güncelleyin..css to .scss


4
1. Adım CLI'den yapılabilir: ng config schematics.@schematics/angular:component.styleext scss resmi belgelerde belirtildiği gibi: github.com/angular/angular-cli/wiki/stories-css-preprocessors
Marian07

13

Angular 6 için,

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

not: @ schematics / angular, Angular CLI için varsayılan şemadır


11

Angular CLI için CSS Ön İşlemci entegrasyonu: 6.0.3

Yeni bir proje oluştururken, stil dosyaları için hangi uzantıyı istediğinizi de tanımlayabilirsiniz:

ng new sassy-project --style=sass

Veya mevcut bir projede varsayılan stili ayarlayın:

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

Tüm büyük CSS ön işlemcileri için Angular CLI Belgeleri


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

Eğik CLI 6.0.8 itibariyle ng config(yukarıdaki gibi) en iyi yöntemdir AMA hala adlandırmak gerekir *.cssdosyaları *.scssVE başvuruları değiştirmek angular.jsoniçin style.cssbirlikte style.scsstüm bileşen dosya başvuruları VE güncellemek styleUrlsyeni isimlere mülk. ... o zaman harika çalışıyor!
gkl

8

Mevcut projeler için :

Gelen angular.jsondosyanın

  1. Gelen buildparçası ve içinde testparçası değiştirin:

    "styles": ["src/styles.css"], tarafından "styles": ["src/styles.scss"],

  2. Değiştir:

    "schematics": {}, tarafından "schematics": { "@schematics/angular:component": { "style": "scss" } },

ng config schematics.@schematics/angular:component.styleext scssKomut kullanmak işe yarıyor ancak yapılandırmayı aynı yere yerleştirmiyor.

Projenizde.css dosyalarınızı şu şekilde yeniden adlandırın:.scss

Yeni bir proje için , bu komut tüm işi yapar:

ng n project-name --style=scss

Global konfigürasyon için

Yeni sürümlerde genel bir komut yok gibi görünüyor


6

Şu komutu kullanın:

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

3

Ng6 size benzer göre, bu komutu kullanmanız gerekir mesaja :

ng config schematics.@schematics/angular:component '{ styleext: "scss"}'

3

Bu iş parçacığıyla karşılaşan Nrwl uzantılarının kullanıcıları için : tüm komutlar Nx (örn. ng generate component myCompent) Tarafından yakalanır ve ardından AngularCLI'ye aktarılır.

SCSS'nin bir Nx çalışma alanında çalışmasını sağlama komutu:

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


Harika, bunu arıyordu. Teşekkür ederim!
Ruan Petersen

2

Bir kaba kuvvet değişikliği uygulanabilir. Bu değişmeye çalışacak, ancak daha uzun bir süreç.

Src / app uygulama klasörüne gidin

  1. Bu dosyayı açın: app.component.ts

  2. Bu kodu şu styleUrls: ['./app.component.css']şekilde değiştirin:styleUrls: ['./app.component.scss']

  3. Kaydet ve kapat.

Aynı klasörde src / app

  1. App.component.css dosyası için uzantıyı (app.component.scss) olarak yeniden adlandırın

  2. Diğer tüm bileşenler için bu değişikliği uygulayın. (ör. ev, hakkında, iletişim vb.)

Angular.json yapılandırma dosyası yanındadır. Proje kökünde bulunur.

  1. Ara ve Değiştir css'i (scss) olarak değiştirin .

  2. Kaydet ve kapat.

Son olarak ng serve -o,.

Derleyici sizden şikayet ederse, adımları tekrar gözden geçirin.

App / src'deki adımları yakından takip ettiğinizden emin olun .


1

Angular'ın (v9) son sürümünde, aşağıdaki kodun eklenmesi gerekir angular.json

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

Aşağıdaki komut kullanılarak eklenebilir:

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

benim için çalışmıyor ve bunu 10'dan fazla yapmaya çalışıyorum
Kross
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.