Advertisement
  1. Web Design
  2. PostCSS

Menggunakan PostCSS dipadu dengan Sass, Stylus, atau LESS

by
Read Time:14 minsLanguages:
This post is part of a series called PostCSS Deep Dive.
PostCSS Deep Dive: Roll Your Own Preprocessor
Using PostCSS with BEM and SUIT Methodologies

Indonesian (Bahasa Indonesia) translation by Ridho Anbia Habibullah (you can also view the original English article)

Jika Anda tertarik menggunakan PostCSS, tetapi Anda masih menyukai preprocessor favorit Anda, jangan khawatir. Anda tidak perlu membuat pilihan di antara keduanya - Anda dapat menggunakannya berdampingan satu sama lain.

Ada beberapa plugin PostCSS yang memuji preprocessors dengan sangat baik, karena mereka menambahkan fungsionalitas ke dalam alur kerja Anda yang seharusnya tidak mungkin, atau setidaknya lebih sulit, hanya menggunakan preprocessor.

Kami akan mencoba beberapa plugin gratis ini, kemudian kami akan melalui panduan penyiapan untuk menunjukkan kepada Anda cara menggunakan PostCSS berdampingan dengan Sass, Stylus, atau LESS.

Mengapa menggunakan keduanya?

Sebelum kami memahami bagaimana Anda dapat menggunakan preprocessor bersama dengan PostCSS, kami akan membahas sedikit tentang mengapa Anda menginginkannya. Jawaban singkatnya adalah: untuk mendapatkan akses ke plugin PostCSS yang fungsinya melengkapi preprocessors. Untuk menunjukkan kepada Anda mengapa ini berharga, kami akan membahas beberapa plugin yang bekerja sangat baik dengan preprocessors.

Catatan: dimungkinkan untuk mencapai hasil akhir yang serupa dengan menggunakan mixin dan fungsi dalam kode preprocessor biasa, tetapi dengan masing-masing contoh di bawah ini proses ditangani secara otomatis. Anda menulis CSS Anda secara normal dan plugin menangani segalanya untuk Anda, tanpa fungsi untuk dipanggil, tidak ada mixin yang disertakan, atau argumen yang harus dilewati.

autoprefixer

Ada banyak mixin preprocessor yang ditulis untuk menangani penyisipan awalan vendor. Misalnya, Anda mungkin telah menggunakan @include box-sizing(border-box); dari pustaka Kompas ke aturan vendor keluaran box-sizing.

Masalah dengan mengandalkan mixin untuk awalan vendor adalah:

  1. Pertama-tama Anda harus tahu properti membutuhkan awalan sebelum Anda dapat memutuskan untuk menerapkan mixin untuknya.
  2. Anda harus tahu nama mixin yang terkait dan cara menggunakannya.
  3. Anda harus mengawasi kapan awalan vendor tidak lagi diperlukan untuk setiap properti (saya tahu saya sudah awalan box-sizing untuk cara panjang ...)

Autoprefixer menghilangkan masalah ini dengan menangani proses awalan vendor prefixing automatically. Autoprefixer memindai CSS Anda, mengeceknya terhadap data dari CanIUse.com, lalu menambahkan awalan yang diperlukan.

Baca lebih lanjut tentang Autoprefixer di: https://github.com/postcss/autoprefixer

rtlcss

Menghasilkan baik default dan RTL (right to left) stylesheet dari satu sumber juga sesuatu yang telah dilakukan dengan preprosesor, tetapi biasanya membutuhkan penggunaan beberapa mixins dan / atau interpolasi variabel ke dalam kode Anda di beberapa tempat. Misalnya, daripada menulis margin-left: 1rem; Anda mungkin perlu menulis margin-#{dir}: 1rem; atau @include margin-left( 1rem );.

Dengan plugin rtlcss oleh Mohammad Younes, Anda tidak perlu menggunakan mixins atau interpolasi variabel, Anda hanya menulis stylesheet seperti biasa dan plugin akan menemukan semua instance atau "right" atau "left" dan menukarnya di sekitar. Jadi margin-left: 1rem; otomatis menjadi margin-right: 1rem; tanpa Anda harus menulis kode khusus untuk mewujudkannya.

Baca lebih lanjut tentang rtlcss di: https://github.com/MohammadYounes/rtlcss

postcss-colorblind

Dengan plugin postcss-colorblind oleh Brian Holt, Anda dapat secara otomatis menghasilkan berbagai versi stylesheet yang memberi Anda pengalaman langsung tentang bagaimana desain Anda akan terlihat bagi orang yang buta warna. Ini dapat mensimulasikan delapan jenis colorblindness yang berbeda, membantu Anda mendapatkan pemahaman yang benar-benar kuat tentang seberapa mudahnya skema warna Anda.

Ini adalah contoh fungsi yang Anda benar-benar harus pergi ke PostCSS untuk menemukan, karena akan sangat sulit bagi preprocessors untuk mencapainya.

Baca lebih lanjut tentang postcss-buta warna di: https://github.com/btholt/postcss-colorblind

postcss-svgo

Plugin postcss-svgo oleh Ben Briggs dapat memberikan Anda optimasi gratis dari kode SVG sebaris. Misalnya ini:

Dapat diringkas menjadi ini, kurang dari setengah kode:

Baca lebih lanjut tentang postcss-svgo di: https://github.com/ben-eb/postcss-svgo

cssnano

Sementara preprosesor dapat menghapus spasi dan komentar, paket cssnano oleh Ben Briggs dapat melakukan semua jenis pengoptimalan di atas dan di luar dua langkah ini. Kami membahas cssnano secara detail dalam tutorial Untuk Minifikasi dan Pengoptimalan.

Baca lebih lanjut tentang cssnano di: https://github.com/ben-eb/cssnano

postcss-font-magician

Plugin postcss-font-magician oleh Jonathan Neal membuat penambahan font kustom semudah menggunakan font biasa. Anda tidak perlu menggunakan mixin apa pun, cukup tambahkan aturan font-family seperti biasanya:

... dan pengaya akan menangani pembuatan penuh @font-face untuk Anda:

Baca lebih lanjut tentang postcss-font-penyihir di: https://github.com/jonathantneal/postcss-font-magician

Pengaturan Proyek

Ada enam panduan panduan di bawah ini: Gulp dan Grunt guide untuk setiap preprocessor utama. Tidak perlu membaca keenamnya, Anda dapat langsung melompat ke panduan untuk preprocessor yang Anda inginkan dan membuat alat. Jika Anda tidak yakin apakah akan menggunakan Gulp atau Grunt, Gulp jelas merupakan pilihan yang lebih sederhana untuk tutorial ini.

Untuk panduan apa pun yang Anda ikuti, Anda harus memulai dengan proyek Gulp atau Grunt kosong. Anda dapat membaca tentang bagaimana untuk setup menelan atau kasar proyek untuk PostCSS dalam tutorial sebelumnya

masing-masing.

Jika Anda tidak ingin secara manual menyiapkan proyek dari awal, Anda dapat mengunduh file sumber yang dilampirkan ke tutorial ini, dan ekstrak proyek starter Gulp atau Grunt yang tersedia ke dalam folder proyek kosong. Kemudian dengan terminal atau command prompt menunjuk folder menjalankan perintah npm install.

Pasang(Install) Plugin PostCSS Ke dalam Proyek Anda

Setelah Anda menyiapkan proyek kosong untuk salah satu bagian di bawah ini, Anda juga perlu memasang dua plugin PostCSS: Autoprefixer dan cssnano. Anda dapat melakukannya dengan menjalankan perintah:

Kami akan menggunakan dua plugin ini untuk menguji bahwa PostCSS dan preprocessor Anda bekerja sama seperti yang diharapkan.

Preprocess sebelum PostCSS

Aturan pertama menggunakan preprocessor dengan PostCSS adalah Anda harus selalu menjalankan preprocessor tersebut terlebih dahulu. Ini karena Anda tidak ingin memiliki sintaks khusus preprocessor apa pun dalam kode Anda yang mungkin menghambat plugin PostCSS, dan Anda juga tidak ingin PostCSS membuat perubahan pada kode Anda yang mungkin mencegah preprocessor berjalan seperti yang diharapkan.

PostCSS Plugins dan "Kode Pengujian PostCSS"

Untuk masing-masing preprosesor yang kita atur, kita akan memiliki mereka menjalankan autoprefixer dan cssnano setelah preprocessor selesai kompilasi. Pada masing-masing kasus, kita perlu menambahkan beberapa kode pengujian untuk dua plugin ini untuk beroperasi.

Untuk menyimpan pengulangan kode yang sama di setiap bagian di bawah ini, ketika Anda melihat instruksi yang memberitahu Anda untuk menambahkan kode pengujian PostCSS Anda, tambahkan ini ke file sumber preprocessor yang Anda kerjakan:

Jika berhasil, kode yang dikompilasi Anda akan dalam setiap kasus keluar sebagai:

Catatan: penggunaan flexbox telah diperbaiki secara otomatis, dan cssnano telah melakukan beberapa pengoptimalan kode. Kami menggunakan kode yang sama untuk menguji cssnano seperti yang kami lakukan di tutorial For Minification and Optimization sebelumnya, jadi silakan lihat bagian 'cssnano' di dalamnya untuk detail tentang pengoptimalan yang dilakukan.

1. Sass + PostCSS

Karena Anda sudah bekerja dengan Node.js untuk menjalankan Gulp atau Grunt dan PostCSS, cara termudah untuk menggunakan Sass bersama mereka adalah melakukannya melalui LibSass. Hal ini juga jauh lebih cepat daripada Ruby Sass. Kami akan menerapkan LibSass melalui modul gulp-sass atau modul grunt-contrib-sass.

Penyiapan melalui Gulp

Instal modul gulp-sass ke dalam proyek Anda dengan npm install gulp-sass --save-dev.

Sekarang Anda dapat memperbarui Gulpfile Anda sebagai berikut:

Mari kita jabarkan apa yang telah kita ubah dari Gulpfile starter default:

  • Menambahkan variabel untuk memuat gulp-sass, autoprefixer dan cssnano
  • Menambahkan variabel autoprefixer dan cssnano ke array processors
  • Mengedit ekstensi file pada file sumber yang kami kompilasi ke '.scss' alih-alih '.css'
  • Menambahkan pipa () baru, .pipe (sass () ..., untuk memproses Sass, pastikan untuk menempatkannya sebelum garis yang memproses PostCSS

Sekarang kita dapat menjalankan beberapa tes untuk memastikan Sass dan PostCSS mengumpulkan seperti yang diharapkan.

Tes Preprocessor

Ubah nama file “src / style.css” Anda yang sudah ada menjadi “src / style.scss” dan tambahkan kode tes berikut ini:

Jalankan gulp css dan Anda akan melihat file “style.css” baru muncul di folder “dest” Anda dengan isinya:

Uji PostCSS

Sekarang, tambahkan kode pengujian PostCSS yang disediakan sebelumnya dalam tutorial ini ke file “style.scss” Anda.

Jalankan perintah gulp css Anda dan Anda akan melihat kode yang benar muncul di file 'dest / style.css' Anda:

Setup melalui Grunt

Ke proyek Grunt baru Anda, instal modul grunt-contrib-sass dengan npm install grunt-contrib-sass.

Kemudian tambahkan fungsi grunt.loadNpmTasks () untuknya di bawah yang ada yang Anda miliki untuk PostCSS:

Anda sekarang perlu menyiapkan tugas baru untuk memproses Sass. Setelah baris ini:

... tetapi sebelum tugas postcss yang ada, tambahkan kode ini:

Sekarang kami akan mendaftarkan tugas yang akan menjalankan Sass dan kemudian PostCSS. Setelah grunt.loadNpmTasks () fungsi yang baru saja Anda sisipkan, tambahkan:

Tes Preprocessor

Untuk menguji konfigurasi Anda, mengubah nama file "src/style.css" Anda ada untuk "style.scss". Tambahkan kode Sass ini padanya:

Jalankan perintah grunt css dan Anda akan melihat file baru yang dibuat di folder "dest" Anda bernama "style.css" dan berisi kode ini:

Pengaturan PostCSS

Kami sekarang akan menjalankan plugin Autoprefixer dan cssnano kami. Perbarui susunan processors Gruntfile Anda ke yang berikut:

Uji PostCSS

Menambahkan kode uji PostCSS ke file "style.scss", jalankan perintah css mendengus lagi dan Anda harus menemukan file recompiled "dest/style.css" Anda sekarang berisi autoprefixed benar dan dioptimalkan kode.

2. stylus + PostCSS

Stylus dan PostCSS bekerja dengan sangat baik bersama-sama berkat pembuatan paket PostStylus oleh Sean King, yang menggabungkan pemrosesan Stylus dan PostCSS. Jika Anda seorang pengembang Stylus, Anda cukup menambahkan PostStylus ke proses kompilasi Anda dan segera memiliki akses untuk menggunakan plugin PostCSS sebagai bagian dari alur kerja Anda.

PostStylus: https://github.com/seaneking/poststylus

Penyiapan melalui Gulp

Jika Anda menggunakan Gulpfile premade dari proyek awal, Anda akan diperhatikan menggunakan plugin gulp-postcss. Ini sebenarnya hanya di sana karena diperlukan untuk proses penyiapan Sass dan LESS, tetapi untuk Stylus, kami tidak memerlukannya karena kami menggunakan PostStylus sebagai kompilator kami.

Anda dapat menghapusnya dari proyek Anda dengan npm uninstall gulp-postcss --save-dev, dan hapus baris ini dari Gulpfile Anda:

Sekarang kita dapat menginstal dua plugin yang kita butuhkan untuk kompilasi Stylus dan PostCSS, dengan menjalankan perintah:

Perbarui Gulpfile Anda menjadi:

Berikut adalah apa yang kita lakukan di atas:

  • Tambahkan variabel untuk memuat gulp-stylus, poststylus, autoprefixer dan cssnano
  • Menambahkan variabel autoprefixer dan cssnano ke array processors
  • Mengedit ekstensi file pada file sumber yang kami kompilasi ke '.styl' alih-alih '.css'
  • Menghapus baris .pipe () yang membaca .pipe (postcss (prosesor))
  • Menggantinya dengan .pipe (stylus ({..., untuk mengatur modul gulp-stylus dan poststylus untuk menangani kompilasi kami

Uji Preprocessor

Sekarang kami siap menguji kompilasi. Di folder “src” Anda, ganti nama “style.css” menjadi “style.styl” dan tambahkan tes ini kode Stylus:

Jalankan perintah gulp css dan Anda akan melihat file “style.css” muncul di folder “dest” Anda dengan konten ini:

Uji PostCSS

Tambahkan kode pengujian PostCSS yang diberikan sebelumnya ke file “style.styl” Anda, memastikan hanya indentasi tab yang ada di kode yang ditempelkan, bukan spasi.

Mengkompilasi ulang, dan periksa apakah Anda memiliki output yang sesuai dalam file “dest / style.css” Anda.

Setup melalui Grunt

Seperti halnya dengan proyek Gulp untuk Stylus, compiler PostCSS default yang datang dengan proyek starter tidak diperlukan, berada di sana murni untuk proses penyiapan Sass dan LESS. Anda dapat menghapusnya dari proyek Anda dengan npm uninstall grunt-postcss --save-dev.

Sekarang kita dapat menginstal grunt-contrib-stylus dan poststylus dengan perintah:

Kami tidak lagi akan menggunakan grunt-postcs, jadi cari baris ini:

Dan ganti dengan:

Mengingat kami tidak menggunakan grunt-postcs, itu artinya kami tidak lagi membutuhkan tugas postcs yang telah kami tetapkan di dalam grunt.initConfig ({...}) ;. Hapus konfigurasi tugas itu dan gantilah dengan tugas stylus baru ini:

Uji Preprocessor

Sekarang kami siap menguji kompilasi. Di folder “src” Anda, ganti nama “style.css” menjadi “style.styl” dan tambahkan tes ini kode Stylus:

Jalankan command grunt stylus dan Anda akan melihat file “style.css” muncul di folder “dest” Anda dengan konten ini:

Pengaturan PostCSS

Untuk menambahkan plugin PostCSS kami ke dalam proses kompilasi, pertama-tama kita perlu menambahkan kode ini ke bagian paling atas Gruntfile kami, di atas garis module.exports ...:

Ini adalah dimana Anda akan memuat setiap plugin PostCSS yang ingin Anda gunakan, bukan dalam sebuah array prosesor Anda akan digunakan untuk dari tutorial kami yang lain.

Kemudian temukan objek options di dalam tugas stylus, dan perbarui ke yang berikut:

Ini memberitahu grunt-contrib-stylus untuk menggunakan poststylus selama kompilasi, dan pluginnya bersama dengan itu.

Uji PostCSS

Tambahkan “kode pengujian PostCSS” ke file “src / style.styl” Anda, jalankan stylus penggerutu, dan Anda akan melihat konten berikut yang ditulis ke dalam file “dest / style.css” Anda:

3. LESS + PostCSS

Setup melalui Gulp

Instal modul gulp-less ke dalam proyek Anda dengan npm install gulp-less --save-dev.

Sekarang Anda dapat memperbarui Gulpfile Anda ke yang berikut:

Mari kita jabarkan apa yang telah kita ubah dari Gulpfile starter default:

  • Menambahkan variabel untuk memuat gulp-less, autoprefixer dan cssnano
  • Menambahkan variabel autoprefixer dan cssnano ke array processors
  • Mengedit ekstensi file pada file sumber yang kami kompilasi ke “.less” alih-alih “.css”
  • Added .pipe (less ()) untuk memproses LESS, pastikan untuk menempatkannya sebelum baris yang memproses PostCSS

Uji Preprocessor

Sekarang kita dapat menjalankan beberapa tes untuk memastikan baik LESS dan PostCSS dikompilasi seperti yang diharapkan.

Ganti nama file “src/style.css” yang ada menjadi “src/style.less” dan tambahkan kode tes berikut ini:

Jalankan gulp css dan Anda akan melihat file “style.css” baru muncul di folder “dest” Anda dengan isinya:

Uji PostCSS

Sekarang, untuk file “style.less” Anda tambahkan kode pengujian PostCSS yang disediakan sebelumnya dalam tutorial ini.

Jalankan perintah gulp css Anda dan Anda akan melihat kode yang benar sekarang muncul di file “dest/style.css” Anda.

Setup melalui Grunt

Ke dalam proyek Grunt baru Anda, instal modul yang kurang mendengus-kurang dengan npm install grunt-contrib-less, kemudian tambahkan fungsi grunt.loadNpmTasks () untuknya di bawah yang ada yang Anda miliki untuk PostCSS:

Anda sekarang harus menyiapkan tugas baru untuk memproses LESS. Setelah baris ini:

... tetapi sebelum tugas postcss yang ada, tambahkan kode ini:

Sekarang kami akan mendaftarkan tugas, untuk menjalankan LESS dan kemudian PostCSS. Setelah grunt.loadNpmTasks () fungsi yang baru saja Anda sisipkan, tambahkan:

Uji Preprocessor

Untuk menguji pengaturan Anda, ganti nama file “src/style.css” Anda “style.less”. Tambahkan kode LESS ini ke:

Jalankan perintah grunt css dan Anda akan melihat file baru yang dibuat di folder 'dest' Anda bernama “style.css” dan berisi kode ini:

Siapkan PostCSS

Sekarang kami akan menambahkan plugin PostCSS kami ke dalam aliran kompilasi. Perbarui susunan processors Gruntfile Anda ke yang berikut:

Uji PostCSS

Tambahkan kode pengujian PostCSS ke file “style.less” Anda, jalankan perintah grunt css lagi dan Anda akan menemukan file “dest/style.css” yang dikompilasi ulang sekarang berisi kode autoprefixed dan optimal yang benar:

Di Tutorial Berikutnya

Selanjutnya, kami akan memeriksa sesuatu yang hampir dapat Anda anggap sebagai jenis berbeda dari preprocessing – menggunakan PostCSS untuk kelas CSS yang memenuhi standar BEM / SUIT yang dihasilkan secara otomatis. Proses ini membuat pengembangan BEM / SUIT jauh lebih mudah untuk melacak, belum lagi lebih efisien.

Sampai jumpa di tutorial selanjutnya!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.