Saya memodulasi stylesheet saya dengan parsial SASS seperti:
@import partials/header
@import partials/viewport
@import partials/footer
@import partials/forms
@import partials/list_container
@import partials/info_container
@import partials/notifications
@import partials/queues
apakah ada cara untuk memasukkan seluruh direktori partial (ini adalah direktori yang penuh dengan SASS-partial) seperti @import kompas atau sesuatu?
@import 'partials/header', 'partials/viewport', 'partials/footer';
.Jawaban:
Jika Anda menggunakan Sass dalam proyek Rails, permata sass-rails, https://github.com/rails/sass-rails , fitur glob import.
Untuk menjawab kekhawatiran pada jawaban lain, "Jika Anda mengimpor direktori, bagaimana Anda dapat menentukan pesanan impor? Tidak ada cara yang tidak memperkenalkan beberapa tingkat kompleksitas baru."
Beberapa orang akan berpendapat bahwa mengatur file Anda ke dalam direktori dapat MENGURANGI kompleksitas.
Proyek organisasi saya adalah aplikasi yang agak rumit. Ada 119 file Sass dalam 17 direktori. Ini kira-kira sesuai dengan pandangan kami dan terutama digunakan untuk penyesuaian, dengan angkat berat ditangani oleh kerangka kerja kustom kami. Bagi saya, beberapa baris direktori impor sedikit lebih kompleks daripada 119 baris nama file impor.
Untuk mengatasi urutan pemuatan, kami menempatkan file yang perlu memuat pertama - mixin, variabel, dll. - di direktori pemuatan awal. Kalau tidak, muat pesanan adalah dan harus tidak relevan ... jika kita melakukan sesuatu dengan benar.
sumber
@import "*"
(di application.css.scss) jika file css / scss controller Anda ada di folder "app / assets / stylesheet" bersama dengan application.css.scss.@import "*"
di application.scss termasuk semua file lain yang ada di direktori yang sama tetapi tidak memasukkan kembali application.scss ... Saya berharap untuk mendapatkan bug perulangan yang tak terbatas.Fitur ini tidak akan pernah menjadi bagian dari Sass. Salah satu alasan utama adalah pesanan impor. Dalam CSS, file yang diimpor terakhir dapat menimpa gaya yang dinyatakan sebelumnya. Jika Anda mengimpor direktori, bagaimana Anda bisa menentukan pesanan impor? Tidak ada cara yang tidak memperkenalkan tingkat kompleksitas baru. Dengan menyimpan daftar impor (seperti yang Anda lakukan dalam contoh Anda), Anda menjadi eksplisit dengan pesanan impor. Ini sangat penting jika Anda ingin dapat dengan yakin mengesampingkan gaya yang didefinisikan dalam file lain atau menulis mixin dalam satu file dan menggunakannya dalam file lain.
Untuk diskusi yang lebih menyeluruh, lihat permintaan fitur tertutup ini di sini:
sumber
@import "/functions"
atau@import "partials/"
.Lihat proyek sass-globbing .
sumber
Saya membuat file bernama
__partials__.scss
di direktori yang samapartials
Dalam
__partials__.scss
, saya menulis ini:Jadi, ketika saya ingin mengimpor keseluruhan
partials
, tulis saja@import "partials"
. Jika saya ingin mengimpornya, saya juga bisa menulis@import "partials/header"
.sumber
@import 'partials/xyz'
pernyataan secara manual setiap kali parsial baru dibuat.forms
danwidgets
direktori, saya bisa@import "forms"; @import "widgets"
di file CSS utama untuk halaman, dan hanya khawatir tentang semua parsial individu (@import forms/text; @import forms/button
...) di dalamforms.scss
danwidgets.scss
.Anda dapat menggunakan sedikit solusi dengan menempatkan file sass di folder apa yang ingin Anda impor dan impor semua file dalam file seperti ini:
path file: main / current / _current.scss
@import "placeholders"; @import "colors";
dan pada file level dir berikutnya, Anda hanya menggunakan impor untuk file yang mengimpor semua file dari dir itu:
path file: main / main.scss
@import "EricMeyerResetCSSv20"; @import "clearfix"; @import "current";
Dengan begitu Anda memiliki jumlah file yang sama, seperti Anda mengimpor seluruh dir. Waspadalah terhadap urutan, file yang datang terakhir akan menimpa stil yang cocok.
sumber
Anda mungkin ingin mempertahankan urutan sumber maka Anda bisa menggunakan ini.
Saya lebih memilih ini.
sumber
http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#import
tidak terlihat seperti itu.
Jika salah satu dari file ini selalu membutuhkan yang lain, minta mereka mengimpor file lain dan hanya mengimpor yang tingkat atas. Jika semuanya berdiri sendiri, maka saya pikir Anda harus tetap melakukannya seperti sekarang.
sumber
Jawaban yang diterima oleh Dennis Best menyatakan bahwa "Jika tidak, muat pesanan adalah dan harus tidak relevan ... jika kita melakukan sesuatu dengan benar." Ini tidak benar. Jika Anda melakukan hal-hal dengan benar, Anda menggunakan urutan css untuk membantu Anda mengurangi kekhususan dan membuat Anda sederhana dan bersih.
Apa yang saya lakukan untuk mengatur impor adalah menambahkan
_all.scss
file di direktori, tempat saya mengimpor semua file yang relevan di dalamnya, dalam urutan yang benar. Dengan cara ini, file impor utama saya akan sederhana dan bersih, seperti ini:Anda dapat melakukan ini untuk sub-direktori juga, jika Anda perlu, tetapi saya tidak berpikir struktur file css Anda harus terlalu dalam.
Meskipun saya menggunakan pendekatan ini, saya masih berpikir impor glob harus ada di sass, untuk situasi di mana pesanan tidak penting, seperti direktori mixin atau bahkan animasi.
sumber
Saya juga mencari jawaban untuk pertanyaan Anda. Sesuai dengan jawaban impor yang benar semua fungsi tidak ada.
Itulah sebabnya saya telah menulis skrip python yang perlu Anda tempatkan ke root folder scss Anda seperti ini:
Kemudian akan berjalan melalui pohon dan menemukan semua file scss. Setelah dieksekusi, itu akan membuat file scss yang disebut main.scss
contoh file keluaran:
sumber
ini bekerja dengan baik untuk saya
sumber
Anda dapat menghasilkan file SASS yang mengimpor semuanya secara otomatis, saya menggunakan tugas Gulp ini:
Anda juga dapat mengontrol impor pesanan dengan memesan folder seperti ini:
sumber
Ini mungkin pertanyaan lama, tetapi masih relevan pada tahun 2020, jadi saya mungkin memposting beberapa pembaruan. Sejak pembaruan Octobers'19 kita umumnya harus menggunakan @use bukan @ impor , tapi itu hanya sebuah ucapan. Solusi untuk pertanyaan ini adalah menggunakan file indeks untuk menyederhanakan termasuk seluruh folder. Contoh di bawah ini.
https://sass-lang.com/documentation/at-rules/use#index-files
sumber
@forward
_index.scss Anda alih-alih@use
Dengan mendefinisikan file yang akan diimpor dimungkinkan untuk menggunakan semua folder definisi umum.
Jadi,
@import "style/*"
akan mengkompilasi semua file dalam folder gaya.Lebih lanjut tentang fitur impor di Sass dapat Anda temukan di sini .
sumber