Peringatan: Node Sass telah mencapai akhir masa pakainya. Ia tidak akan menerima rilis lagi, bahkan untuk perbaikan keamanan. Proyek yang masih menggunakannya harus dipindahkan ke Dart Sass.
Versi Node.js yang didukung bervariasi berdasarkan rilis, silakan lihat halaman rilis.
Versi node yang mencapai akhir masa pakainya https://github.com/nodejs/Release, akan dihapus dari dukungan pada setiap rilis node-sass (mayor, minor).
Kami akan berhenti membuat binari untuk rilis yang tidak didukung, menguji kerusakan pada kompatibilitas ketergantungan, namun kami tidak akan memblokir instalasi bagi rilis yang ingin mendukung dirinya sendiri.
Rilis node baru memerlukan perubahan internal kecil bersama dengan dukungan dari penyedia CI (AppVeyor, GitHub Actions). Kami akan membuka satu terbitan bagi pihak yang berkepentingan untuk berlangganan, dan menutup terbitan tambahan.
Di bawah ini adalah panduan singkat untuk versi node-sass minimum dan maksimum yang didukung:
| NodeJS | Versi node-sass yang didukung | Modul Node |
|---|---|---|
| simpul 20 | 9.0+ | 115 |
| simpul 19 | 8.0+ | 111 |
| simpul 18 | 8.0+ | 108 |
| simpul 17 | 7.0+, <8.0 | 102 |
| simpul 16 | 6.0+ | 93 |
| simpul 15 | 5.0+, <7.0 | 88 |
| simpul 14 | 4.14+, <9.0 | 83 |
| simpul 13 | 4.13+, <5.0 | 79 |
| simpul 12 | 4.12+, <8.0 | 72 |
| simpul 11 | 4.10+, <5.0 | 67 |
| simpul 10 | 4.9+, <6.0 | 64 |
| simpul 8 | 4.5.3+, <5.0 | 57 |
| simpul <8 | <5.0 | <57 |
Ini memungkinkan Anda mengkompilasi file .scss ke css secara asli dengan kecepatan luar biasa dan secara otomatis melalui middleware koneksi.
Temukan di npm: https://www.npmjs.com/package/node-sass
Ikuti @nodesass di twitter untuk pembaruan rilis: https://twitter.com/nodesass
npm instal node-sass
Beberapa pengguna telah melaporkan masalah instalasi di Ubuntu karena node didaftarkan ke paket lain. Ikuti dokumen resmi NodeJS untuk menginstal NodeJS sehingga #!/usr/bin/env node terselesaikan dengan benar.
Kompilasi pada mesin Windows memerlukan prasyarat node-gyp.
Apakah Anda melihat kesalahan berikut? Lihat panduan Pemecahan Masalah kami.**
SyntaxError: Use of const in strict mode.
Mengalami masalah instalasi? Lihat panduan Pemecahan Masalah kami.
npm install -g mirror-config-china --registry=https://registry.npmmirror.com npm instal node-sass
var sass = memerlukan('node-sass');sass.render({
file: scss_nama file,
[, pilihan..]}, function(err, hasil) { /*...*/ });// ORvar hasil = sass.renderSync({
data: scss_content
[, pilihan..]}); Jenis: String
Bawaan: null
Khusus : file atau data harus ditentukan
Jalur ke file untuk dikompilasi oleh LibSass.
Jenis: String
Bawaan: null
Khusus : file atau data harus ditentukan
Sebuah string untuk diteruskan ke LibSass untuk dikompilasi. Disarankan agar Anda menggunakan includePaths bersamaan dengan ini sehingga LibSass dapat menemukan file saat menggunakan direktif @import .
Ini adalah fitur eksperimental LibSass. Gunakan dengan hati-hati.
Jenis: Function | Function[] function(url, prev, done)
Bawaan: undefined
Parameter Fungsi dan Informasi:
url (String) - jalur dalam import as-is , yang ditemui LibSass
prev (String) - jalur yang diselesaikan sebelumnya
done (Function) - fungsi panggilan balik untuk dipanggil pada penyelesaian async, mengambil objek yang berisi literal
file (String) - jalur alternatif bagi LibSass untuk menggunakan OR
contents (String) - konten yang diimpor (misalnya, dibaca dari memori atau sistem file)
Menangani ketika LibSass menemukan direktif @import . Importir khusus mengizinkan perluasan mesin LibSass secara sinkron dan asinkron. Dalam kedua kasus tersebut, tujuannya adalah return atau memanggil done() dengan literal objek. Bergantung pada nilai literal objek, salah satu dari dua hal akan terjadi.
Saat mengembalikan atau memanggil done() dengan { file: "String" } , jalur file baru akan diasumsikan untuk @import . Disarankan untuk memperhatikan nilai prev jika resolusi jalur relatif mungkin diperlukan.
Saat mengembalikan atau memanggil done() dengan { contents: "String" } , nilai string akan digunakan seolah-olah file dibaca melalui sumber eksternal.
Mulai dari v3.0.0:
this mengacu pada cakupan kontekstual untuk menjalankan sass.render atau sass.renderSync secara langsung
importir dapat mengembalikan kesalahan dan LibSass akan mengeluarkan kesalahan itu sebagai respons. Misalnya:
selesai(Kesalahan baru('tidak ada!'));// atau kembalikan secara sinkron mengembalikan Kesalahan baru('tidak ada yang bisa dilakukan di sini'); importir dapat berupa array fungsi, yang akan dipanggil oleh LibSass sesuai urutan kemunculannya dalam array. Ini membantu pengguna menentukan importir khusus untuk jenis jalur tertentu (sistem file, http). Jika importir tidak ingin menangani jalur tertentu, importir harus mengembalikan null . Lihat bagian fungsi untuk detail lebih lanjut tentang tipe Sass.
Ini adalah fitur eksperimental LibSass. Gunakan dengan hati-hati.
functions adalah Object yang menyimpan kumpulan fungsi khusus yang dapat dipanggil oleh file sass yang sedang dikompilasi. Mereka mungkin mengambil nol atau lebih parameter masukan dan harus mengembalikan nilai baik secara sinkron ( return ...; ) atau asinkron ( done(); ). Parameter tersebut akan menjadi instance dari salah satu konstruktor yang terdapat dalam hash require('node-sass').types . Nilai yang dikembalikan juga harus salah satu dari jenis ini. Lihat daftar tipe yang tersedia di bawah ini:
getValue() / setValue(value) : mendapatkan / menyetel bagian numerik dari angka tersebut
getUnit() / setUnit(unit) : mendapatkan / menyetel bagian satuan dari nomor tersebut
getValue() / setValue(value) : mendapatkan / menyetel string yang disertakan
getR() / setR(value) : komponen merah (integer dari 0 hingga 255 )
getG() / setG(value) : komponen hijau (integer dari 0 hingga 255 )
getB() / setB(value) : komponen biru (integer dari 0 hingga 255 )
getA() / setA(value) : komponen alpha (angka dari 0 hingga 1.0 )
Contoh:
var Warna = memerlukan('node-sass').types.Warna,
c1 = Warna baru (255, 0, 0),
c2 = Warna baru (0xff0088cc); getValue() : mendapatkan boolean terlampir
types.Boolean.TRUE : Contoh tunggal dari types.Boolean yang berisi "benar"
types.Boolean.FALSE : Contoh tunggal dari types.Boolean yang menampung "false"
getValue(index) / setValue(index, value) : value itu sendiri harus berupa turunan dari salah satu konstruktor di sass.types .
getSeparator() / setSeparator(isComma) : apakah akan menggunakan koma sebagai pemisah
getLength()
getKey(index) / setKey(index, value)
getValue(index) / setValue(index, value)
getLength()
types.Null.NULL : Contoh tunggal dari types.Null .
sass.renderSync({
data: '#{heading(2,5)} { warna: #08c; }',
fungsi: {'headings($from: 0, $to: 6)': function(from, to) { var i, f = from.getValue(), t = to.getValue(), list = new sass.types .Daftar(t - f + 1); for (i = f; i <= t; i++) {list.setValue(i - f, new sass.types.String('h' + i)); } daftar pengembalian;}
}}); Ketik: Array<String>
Bawaan: []
Serangkaian jalur yang dapat dilihat oleh LibSass untuk mencoba menyelesaikan deklarasi @import Anda. Saat menggunakan data , disarankan agar Anda menggunakan ini.
Jenis: Boolean
Bawaan: false
nilai true mengaktifkan Sintaks Indentasi Sass untuk menguraikan string data atau file.
Catatan: node-sass/libsass akan mengkompilasi perpustakaan campuran file scss dan sintaks indentasi (.sass) dengan pengaturan Default (false) selama ekstensi .sass dan .scss digunakan dalam nama file.
Jenis: String
Bawaan: space
Digunakan untuk menentukan apakah akan menggunakan karakter spasi atau tab untuk indentasi.
Jenis: Number
Bawaan: 2
Maksimum: 10
Digunakan untuk menentukan jumlah spasi atau tab yang akan digunakan untuk indentasi.
Jenis: String
Bawaan: lf
Digunakan untuk menentukan apakah akan menggunakan urutan cr , crlf , lf atau lfcr untuk jeda baris.
Jenis: Boolean
Bawaan: false
Spesial: Saat menggunakan ini, Anda juga harus menentukan outFile untuk menghindari perilaku yang tidak terduga.
nilai true menonaktifkan penyertaan informasi peta sumber dalam file keluaran.
Jenis: String | null
Bawaan: null
Khusus: Diperlukan ketika sourceMap adalah nilai kebenaran
Tentukan lokasi yang diinginkan dari file keluaran. Sangat disarankan saat mengeluarkan peta sumber sehingga peta tersebut dapat merujuk kembali ke file yang dimaksudkan dengan benar.
Perhatian mengaktifkan opsi ini tidak akan menulis file ke disk untuk Anda, ini hanya untuk tujuan referensi internal (misalnya untuk menghasilkan peta).
Contoh cara menulisnya ke disk
sass.render({...outFile: yourPathTotheFile,
}, function(error, result) { // callback gaya simpul dari v3.0.0 dan seterusnyaif(!error){ // Tidak ada kesalahan selama kompilasi, tulis hasil ini ke disk fs.writeFile(yourPathTotheFile, result.css, function (err){if(!err){ //file tertulis di disk} });}
});}); Jenis: String
Bawaan: nested
Nilai: nested , expanded , compact , compressed
Menentukan format keluaran gaya CSS akhir.
Jenis: Integer
Bawaan: 5
Digunakan untuk menentukan berapa banyak digit setelah desimal yang diperbolehkan. Misalnya, jika Anda memiliki angka desimal 1.23456789 dan presisi 5 , hasilnya akan menjadi 1.23457 di CSS akhir.
Jenis: Boolean
Bawaan: false
true Mengaktifkan nomor baris dan file di mana pemilih ditentukan untuk dimasukkan ke dalam CSS yang dikompilasi sebagai komentar. Berguna untuk debugging, terutama saat menggunakan impor dan mixin.
Jenis: Boolean | String | undefined
Bawaan: undefined
Mengaktifkan pembuatan peta sumber selama render dan renderSync .
Ketika sourceMap === true , nilai outFile digunakan sebagai lokasi keluaran target untuk peta sumber dengan akhiran .map ditambahkan. Jika tidak ada outFile yang disetel, parameter sourceMap diabaikan.
Ketika typeof sourceMap === "string" , nilai sourceMap akan digunakan sebagai lokasi penulisan file.
Jenis: Boolean
Bawaan: false
true mencakup contents dalam informasi peta sumber
Jenis: Boolean
Bawaan: false
true menyematkan peta sumber sebagai URI data
Jenis: String
Bawaan: undefined
nilainya akan dikeluarkan sebagai sourceRoot dalam informasi peta sumber
render Panggilan Balik (>= v3.0.0) node-sass mendukung callback asinkron gaya node standar dengan tanda tangan function(err, result) . Dalam kondisi kesalahan, argumen error diisi dengan objek kesalahan. Dalam kondisi sukses, objek result diisi dengan objek yang menjelaskan hasil panggilan render.
message (String) - Pesan kesalahan.
line (Nomor) - Nomor baris kesalahan.
column (Nomor) - Jumlah kolom kesalahan.
status (Nomor) - Kode status.
file (String) - Nama file kesalahan. Jika opsi file tidak disetel (mendukung data ), ini akan mencerminkan nilai stdin .
css (Buffer) - CSS yang dikompilasi. Tulis ini ke file, atau sajikan sesuai kebutuhan.
map (Buffer) - Peta sumber
stats (Objek) - Objek yang berisi informasi tentang kompilasi. Ini berisi kunci-kunci berikut:
entry (String) - Jalur ke file scss, atau data jika sumbernya bukan file
start (Nomor) - Tanggal.sekarang() sebelum kompilasi
end (Nomor) - Tanggal.sekarang() setelah kompilasi
duration (Nomor) - akhir - awal
includedFiles (Array) - Jalur absolut ke semua file scss terkait tanpa urutan tertentu.
var sass = memerlukan('node-sass');sass.render({
file: '/path/ke/myFile.scss',
data: 'tubuh{latar belakang:biru; a{warna:hitam;}}',
pengimpor: fungsi(url, sebelumnya, selesai) {// url adalah jalur yang diimpor apa adanya, yang ditemui LibSass.// sebelumnya adalah jalur yang diselesaikan sebelumnya.// selesai adalah panggilan balik opsional, baik menggunakannya atau mengembalikan nilai secara sinkron .// this.options berisi hash opsi ini, this.callback berisi callbacksomeAsyncFunction(url, prev, function(result)) bergaya simpul ({file: result.path, // hanya satu dari diperlukan, lihat bagian Perilaku Khusus.isi: hasil.data });});// ORvar result = someSyncFunction(url, prev);return {file: result.path, isi: hasil.data};
},
sertakanPaths: [ 'lib/', 'mod/' ],
outputStyle: 'compressed'}, function(error, result) { // callback bergaya node dari v3.0.0 dan seterusnya
if (kesalahan) {console.log(error.status); // dulunya adalah "kode" di v2x dan di bawahconsole.log(error.column);console.log(error.message);console.log(error.line);
}
else {console.log(result.css.toString());console.log(result.stats);console.log(result.map.toString());// atau Betterconsole.log(JSON.stringify(result. peta)); // catatan, JSON.stringify juga menerima Buffer
}});// Hasil ORvar = sass.renderSync({
file: '/path/ke/file.scss',
data: 'tubuh{latar belakang:biru; a{warna:hitam;}}',
outputStyle: 'terkompresi',
file keluar: '/ke/saya/output.css',
sourceMap: true, // atau jalur absolut atau relatif (ke outFile).
pengimpor: fungsi(url, sebelumnya, selesai) {// url adalah jalur yang diimpor apa adanya, yang ditemui LibSass.// sebelumnya adalah jalur yang diselesaikan sebelumnya.// selesai adalah panggilan balik opsional, baik menggunakannya atau mengembalikan nilai secara sinkron .// this.options berisi opsi ini hashsomeAsyncFunction(url, prev, function(result){ selesai({file: result.path, // hanya satu yang diperlukan, lihat bagian Spesial Perilaku.isi: hasil.data });});// ORvar hasil = someSyncFunction(url, sebelumnya);return {file: hasil.jalur, isi: hasil.data};
}});console.log(result.css);console.log(result.map);console.log(result.stats); Jika opsi file dan data disetel, node-sass akan mengutamakan data dan menggunakan file untuk menghitung jalur di peta sumber.
Info versi node-sass dan libsass sekarang diekspos melalui metode info :
var sass = require('node-sass');console.log(sass.info);/* akan menampilkan sesuatu seperti: node-sass 2.0.1 (Wrapper) [JavaScript] libsass 3.1.0 (Sass Compiler) [ C/C++]*/Karena versi LibSass node-sass >=v3.0.0 ditentukan pada saat run time.
Daftar penggunaan node-sass oleh komunitas dalam alat dan kerangka kerja pembangunan.
@jasonsanjose telah membuat ekstensi Brackets berdasarkan node-sass: https://github.com/jasonsanjose/brackets-sass. Saat mengedit file Sass, ekstensi mengkompilasi perubahan saat disimpan. Ekstensi ini juga terintegrasi dengan Live Preview untuk menampilkan perubahan Sass di browser tanpa menyimpan atau mengompilasi.
Plugin sass resmi Brunch menggunakan node-sass secara default, dan secara otomatis kembali ke Ruby jika penggunaan Compass terdeteksi: https://github.com/brunch/sass-brunch
Kompilasi ulang file .scss secara otomatis untuk server http berbasis koneksi dan ekspres.
Fungsionalitas ini telah dipindahkan ke node-sass-middleware di node-sass v1.0.0
@10xLaCroixDrinker menulis plugin DocPad yang mengkompilasi file .scss menggunakan node-sass: https://github.com/docpad/docpad-plugin-nodesass
@stephenway telah membuat ekstensi yang mengubah Sass ke CSS menggunakan node-sass dengan duo.js https://github.com/duojs/sass
@sindresorhus telah membuat serangkaian tugas kasar berdasarkan node-sass: https://github.com/sindresorhus/grunt-sass
@dlmanning telah membuat plugin gulp sass berdasarkan node-sass: https://github.com/dlmanning/gulp-sass
Server web Harp @sintaxi secara implisit mengkompilasi file .scss menggunakan node-sass: https://github.com/sintaxi/harp
@stevenschobert telah membuat plugin metalsmith berdasarkan node-sass: https://github.com/stevenschobert/metalsmith-sass
@fourseven telah membuat plugin meteor berdasarkan node-sass: https://github.com/fourseven/meteor-scss
@dbashford telah membuat modul Mimosa untuk sass yang mencakup node-sass: https://github.com/dbashford/mimosa-sass
Ada juga contoh aplikasi koneksi di sini: https://github.com/andrew/node-sass-example
Node-sass menyertakan biner yang telah dikompilasi sebelumnya untuk platform populer, untuk menambahkan biner untuk platform Anda, ikuti langkah-langkah berikut:
Lihat proyeknya:
git clone --rekursif https://github.com/sass/node-sass.gitcd node-sass instalasi npm node scripts/build -f # gunakan -d switch untuk rilis debug# jika berhasil, ini akan menghasilkan dan memindahkan# biner di direktori vendor.
Antarmuka untuk penggunaan baris perintah cukup sederhana pada tahap ini, seperti yang terlihat pada bagian penggunaan berikut.
Output akan dikirim ke stdout jika flag --output dihilangkan.
node-sass [options] <input> [output] Atau: cat <input> | node-sass > output
Contoh:
node-sass src/style.scss dest/style.css
Pilihan:
-w, --watch Melihat direktori atau file
-r, --recursive Melihat direktori atau file secara rekursif
-o, --output Direktori keluaran
-x, --omit-source-map-url Hilangkan komentar URL peta sumber dari output
-i, --indented-syntax Perlakukan data dari stdin sebagai kode sass (versus scss)
-q, --quiet Menekan keluaran log kecuali jika ada kesalahan
-v, --version Mencetak info versi
--gaya keluaran CSS gaya keluaran (bersarang | diperluas | kompak | terkompresi)
--indent-type Tipe indentasi untuk keluaran CSS (spasi | tab)
--indent-width Lebar indentasi; jumlah spasi atau tab (nilai maksimum: 10)
--linefeed Gaya Linefeed (cr | crlf | lf | lfcr)
--source-comments Sertakan info debug dalam keluaran
--source-map Memancarkan peta sumber
--source-map-contents Sematkan sertakan konten dalam peta
--source-map-embed Sematkan sourceMappingUrl sebagai URI data
--source-map-root Jalur dasar, akan dipancarkan di peta sumber apa adanya
--include-path Jalur untuk mencari file yang diimpor
--ikuti Ikuti direktori yang terhubung dengan symlink
--precision Jumlah presisi yang diperbolehkan dalam angka desimal
--error-bell Menampilkan karakter lonceng jika ada kesalahan
--importer Jalur ke file .js yang berisi importir khusus
--functions Jalur ke file .js yang berisi fungsi khusus
--membantu Cetak info penggunaan input dapat berupa satu .scss atau .sass , atau sebuah direktori. Jika inputnya berupa direktori, flag --output juga harus diberikan.
Selain itu, catatan --importer mengambil jalur (absolut atau relatif terhadap pwd) ke file js, yang harus memiliki module.exports default yang disetel ke fungsi importir. Lihat perlengkapan pengujian kami misalnya.
Opsi --source-map menerima nilai boolean, dalam hal ini opsi ini menggantikan ekstensi tujuan dengan .css.map . Ia juga menerima jalur ke file .map dan bahkan jalur ke direktori yang diinginkan. Saat mengkompilasi direktori --source-map bisa berupa nilai boolean atau direktori.
node-sass mendukung parameter konfigurasi berbeda untuk mengubah pengaturan yang terkait dengan biner sass seperti nama biner, jalur biner, atau jalur unduhan alternatif. Parameter berikut didukung oleh node-sass:
| Nama variabel | Parameter .npmrc | Argumen proses | Nilai |
|---|---|---|---|
| SASS_BINARY_NAME | sass_binary_name | --sass-nama-biner | jalur |
| SASS_BINARY_SITE | sass_binary_site | --sass-situs biner | URL |
| SASS_BINARY_PATH | sass_binary_path | --sass-jalur biner | jalur |
| SASS_BINARY_DIR | sass_binary_dir | --sass-biner-dir | jalur |
| SASS_REJECT_UNAUTHORIZED | sass_reject_unauthorized | --sass-tolak-tidak sah | nilai |
Parameter berikut dapat digunakan sebagai variabel lingkungan:
Misalnya export SASS_BINARY_SITE=http://example.com/
Sebagai file konfigurasi .npmrc lokal atau global:
Misalnya sass_binary_site=http://example.com/
Sebagai argumen proses:
Misalnya npm install node-sass --sass-binary-site=http://example.com/
Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk biner Anda, maka SASS_REJECT_UNAUTHORIZED akan menimpa (rejectUnauthorized)[https://nodejs.org/docs/latest/api/tls.html#tls_tls_createserver_options_secureconnectionlistener].
Instalasi hanya menjalankan dua tes Mocha untuk melihat apakah mesin Anda dapat menggunakan LibSass bawaan yang akan menghemat waktu selama instalasi. Jika ada pengujian yang gagal, pengujian tersebut akan dibuat dari sumber.
Modul ini dipersembahkan dan dikelola oleh orang-orang berikut:
Michael Mifsud - Pimpinan Proyek (Github / Twitter)
Andrew Nesbitt (Github / Twitter)
Dekan Mao (Github / Twitter)
Brett Wilkins (Github/Twitter)
Keith Cirkel (Github/Twitter)
Laurent Goderre (Github / Twitter)
Nick Schonning (Github / Twitter)
Adeel Mujahid (Github / Twitter)
Kami <3 kontributor kami! Terima kasih khusus kepada semua orang yang telah meluangkan waktu pengembangan pada proyek ini, kami sangat menghargai kerja keras Anda. Anda dapat menemukan daftar lengkap orang-orang tersebut di sini.
Lihat panduan Berkontribusi kami
Hak Cipta (c) 2015 Andrew Nesbitt. Lihat LISENSI untuk detailnya.