CL-angular dari css ke scss


135

Saya sudah membaca dokumentasi , yang mengatakan bahwa jika saya ingin menggunakan scsssaya harus menjalankan perintah berikut:

ng set defaults.styleExt scss

Tetapi ketika saya melakukan itu dan membuat file itu, saya masih menerima kesalahan ini di konsol saya:

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

1
Itu hanya akan berfungsi untuk file yang Anda hasilkan dari titik itu, saya tidak berpikir itu akan memperbaiki yang sudah Anda miliki. Jika Anda, git diffAnda akan melihat apa itu berubah.
jonrsharpe

Tapi saya belum punya file. Hanya ingin berganti.
Jamie

Bagaimana Anda belum memiliki file? Jika Anda membuat proyek baru, mengapa Anda mengonfigurasinya seperti itu?
jonrsharpe

Baru mulai dengan angular2. Saya mencoba mencari tahu semuanya.
Jamie

1
Jika Anda membuat proyek baru, lakukan ng new whatever --style=scss seperti yang ditunjukkan dalam dokumen . Jangan ikuti instruksi untuk mengkonfigurasi proyek yang ada jika itu bukan yang Anda lakukan!
jonrsharpe

Jawaban:


267

Untuk Angular 6 periksa dokumentasi Resmi

Catatan: Untuk @angular/cliversi yang lebih lama dari yang 6.0.0-beta.6digunakan ng setdi ng config.

Untuk proyek yang ada

Dalam proyek sudut-cli yang sudah ada yang dibuat dengan cssgaya default, Anda perlu melakukan beberapa hal:

  1. Ubah ekstensi gaya default menjadi scss

Ubah secara manual .angular-cli.json(Angular 5.x dan lebih lama) atau angular.json(Angular 6+) atau jalankan:

ng config defaults.styleExt=scss

jika Anda mendapatkan kesalahan: Value cannot be found.gunakan perintah:

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

(* sumber: Pilihan SASS CLI SASS )

  1. Ubah nama .cssfile Anda yang ada menjadi .scss(yaitu styles.css dan app / app.component.css)

  2. Arahkan CLI untuk menemukan styles.scss

Ubah ekstensi file secara manual apps[0].stylesdiangular.json

  1. Arahkan komponen untuk menemukan file gaya baru Anda

Ubah styleUrlskomponen Anda agar sesuai dengan nama file baru Anda

Untuk proyek masa depan

Seperti yang disebutkan @Serginho, Anda dapat mengatur ekstensi gaya saat menjalankan ng newperintah

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

Jika Anda ingin menetapkan default untuk semua proyek yang Anda buat di masa depan, jalankan perintah berikut:

ng config --global defaults.styleExt=scss

6
EDIT: Saya hanya perlu menyegarkan pembangun waktu nyata. Ini berfungsi dengan benar
Cristian Traìna

1
@ angular / cli 1.7.3: mengubah defaults.styleExt dari csske scssdalam .angular-cli.jsonakan secara otomatis membuat file scss untuk setiap komponen baru yang dihasilkan di masa depan.
SimonHawesome

4
ng atur defaults.styleExt scss untuk proyek yang ada
smedasn


22
@chovy untuk versi cli sudut terbaru, dalam kasus saya (6.0.7) gunakan perintah ini untuk proyek yang ada: ng config schematics.@schematics/angular:component.styleext scss seperti yang diceritakan oleh @ hamilton.lima
Farhan

52

Pada ng6 ini dapat diselesaikan dengan kode berikut ditambahkan ke angular.jsonpada tingkat root:

Ubah secara manual .angular.json:

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

Saya schematicsbelum di level root tetapi bersarang di dalam proyek saya di angular.json. Haruskah saya mengabaikannya dan menambahkan ini di tingkat root saja?
mcheah

1
@mcheah, ya begitulah pengaturan saya juga, dan berfungsi.
Eric Soyke

Saya meninggalkan milik saya bersarang di dalam proyek dan sepertinya itu berfungsi dengan baik juga, sama seperti FYI bagi siapa saja yang memiliki pertanyaan yang sama.
mcheah

Setelah memperbarui ke ng6 versi terbaru saya schematicssekarang bersarang juga.
Jose Orihuela

Sepertinya itu tidak mengubah apa pun untuk saya. Masih tidak memproses aturan scss dalam file .css.
chovy

34

Buka file angular.json

1. berubah dari

"schematics": {}

untuk

"schematics": {
           "@schematics/angular:component": {
                   "styleext": "scss"       
             }  
  }
  1. ubah dari (di dua tempat)

"src/styles.css"

untuk

"src/styles.scss"

kemudian periksa dan ganti nama semua .cssfile dan perbarui file component.ts styleUrls dari.css to .scss


4
Langkah 1 dapat dilakukan dari CLI: ng config schematics.@schematics/angular:component.styleext scss sebagaimana ditentukan dalam dokumen resmi: github.com/angular/angular-cli/wiki/stories-css-preprocessors
Marian07

13

Untuk Angular 6,

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

catatan: @ schematics / angular adalah skema default untuk CLI Angular


11

Integrasi CSS Preprocessor untuk Angular CLI: 6.0.3

Saat membuat proyek baru, Anda juga dapat menentukan ekstensi mana yang Anda inginkan untuk file gaya:

ng new sassy-project --style=sass

Atau atur gaya default pada proyek yang ada:

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

Dokumentasi CLI sudut untuk semua preprosesor CSS utama


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

Pada Angular CLI 6.0.8 ng config(seperti di atas) adalah metode terbaik TETAPI Anda masih perlu mengganti nama *.cssfile menjadi *.scssDAN mengganti referensi angular.jsonke style.cssdengan style.scssDAN memperbarui semua referensi file komponen di styleUrlsproperti ke nama baru. ... maka itu bekerja dengan baik!
gkl

8

Untuk proyek yang ada :

Dalam angular.jsonfile

  1. Di buildbagian dan di testbagian, ganti:

    "styles": ["src/styles.css"], oleh "styles": ["src/styles.scss"],

  2. Menggantikan:

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

Menggunakan ng config schematics.@schematics/angular:component.styleext scssperintah berfungsi tetapi tidak menempatkan konfigurasi di tempat yang sama.

Dalam proyek Anda, ganti nama .cssfile Anda menjadi.scss

Untuk proyek baru , perintah ini melakukan semua pekerjaan:

ng n project-name --style=scss

Untuk konfigurasi global

Versi baru tampaknya tidak memiliki perintah global



3

Di ng6 Anda perlu menggunakan perintah ini, sesuai dengan pos serupa :

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

3

Untuk pengguna ekstensi Nrwl yang menemukan utas ini: semua perintah dicegat oleh Nx (mis., ng generate component myCompent) Dan kemudian diteruskan ke AngularCLI.

Perintah untuk membuat SCSS bekerja di ruang kerja Nx:

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


Cemerlang, sedang mencari ini. Terima kasih!
Ruan Petersen

2

Perubahan brute force dapat diterapkan. Ini akan berhasil untuk berubah, tetapi ini proses yang lebih panjang.

Buka folder aplikasi src / app

  1. Buka file ini: app.component.ts

  2. Ubah kode ini styleUrls: ['./app.component.css']menjadistyleUrls: ['./app.component.scss']

  3. Simpan dan tutup.

Di folder yang sama src / app

  1. Ganti nama ekstensi untuk file app.component.css menjadi (app.component.scss)

  2. Ikuti perubahan ini untuk semua komponen lainnya. (mis. rumah, tentang, kontak, dll ...)

The angular.json file konfigurasi berikutnya. Itu terletak di root proyek.

  1. Cari dan Ganti css ubah ke (scss) .

  2. Simpan dan tutup.

Terakhir, Mulai ulang ng serve -o.

Jika kompiler mengeluh pada Anda, ulangi langkah-langkahnya lagi.

Pastikan untuk mengikuti langkah-langkah di app / src dengan cermat.


1

Dalam versi terbaru Angular (v9), kode di bawah ini perlu ditambahkan angular.json

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

Dapat ditambahkan menggunakan perintah berikut:

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

tidak bekerja untuk saya dan saya mencoba melakukannya lebih dari 10
Kross
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.