Rumah > hujung hadapan web > tutorial css > Cara menggunakan postcss sebagai alternatif yang boleh dikonfigurasikan untuk sass

Cara menggunakan postcss sebagai alternatif yang boleh dikonfigurasikan untuk sass

Lisa Kudrow
Lepaskan: 2025-02-12 08:24:12
asal
898 orang telah melayarinya

How to Use PostCSS as a Configurable Alternative to Sass

pemaju web suka preprocessors CSS SASS. Menurut pandangan Sass dari Kajian Negeri CSS, setiap pemaju memahami SASS, 89% pemaju menggunakannya secara teratur, dan 88% pemaju sangat berpuas hati dengannya.

Banyak pembungkus web termasuk pemprosesan sass, tetapi anda juga boleh menggunakan postcss tanpa mengetahui. PostCSS terutamanya dikenali dengan plugin autoprefixernya, yang secara automatik menambah -WebKit, -moz, dan -ms vendor awalan ke sifat CSS apabila diperlukan. Sistem pluginnya bermakna ia boleh melakukan lebih banyak ...

Sebagai contoh, anda boleh menyusun fail .scss tanpa menggunakan pengkompil SASS. Tutorial ini menerangkan cara membuat preprocessor CSS tersuai yang menyusun sintaks SASS dan menambah lebih banyak ciri. Ia sesuai untuk sesiapa sahaja yang tahu beberapa node.js dan mempunyai keperluan CSS tertentu.

mata utama

Konfigurasi dan penyesuaian: POSTCSS menyediakan persekitaran yang sangat boleh dikonfigurasikan berbanding dengan SASS. Ia berjalan berdasarkan seni bina pemalam, setiap pemalam melakukan tugas tertentu, yang membolehkan pemaju menyesuaikan tetapan mereka mengikut keperluan projek tertentu.
  • Nota Prestasi: Walaupun pengkompil SASS berasaskan dart cepat, postcss yang dibina di atas JavaScript mungkin lebih perlahan. Walau bagaimanapun, untuk projek-projek yang sudah menggunakan postCSS, perbezaan kelajuan mungkin dapat diabaikan, menjadikannya penyelesaian proses tunggal yang berdaya maju.
  • Pasang dan Persediaan: PostCSS boleh diintegrasikan dengan pelbagai alat binaan atau dijalankan dari baris arahan. Tetapan asas untuk persekitaran seperti sass memerlukan pemasangan beberapa plug-in, seperti
  • ,
  • , postcss-scss dan postcss-advanced-variables. postcss-nested autoprefixer Gunakan pemalam untuk meningkatkan fungsi: PostCSS melampaui fungsi preprocessor tradisional, dan pemalamnya boleh mengendalikan token reka bentuk, mengoptimumkan pertanyaan media, menguruskan aset, dan juga melaksanakan pemampatan CSS berdasarkan persekitaran.
  • Potensi untuk mempermudahkan timbunan pembangunan: Bagi pasukan yang sudah menggunakan PostCSS, mungkin untuk menghapuskan SASS sepenuhnya dalam timbunan pembangunan dan bergantung pada postCSS untuk memenuhi semua keperluan pemprosesan CSS, termasuk mengendalikan sintaks dan ciri-ciri seperti SASS.
  • permulaan cepat

Projek sampel PostCSS boleh diklon dari GitHub. Ia memerlukan node.js, jadi jalankan NPM pemasangan untuk mendapatkan semua kebergantungan.

menyusun kod sumber demo SRC/SCSS/main.scss untuk membina/css/main.css menggunakan arahan berikut:

Gunakan arahan berikut untuk disusun secara automatik apabila fail berubah:
<code>npm run css:dev</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

dan kemudian keluar pemantauan dengan menekan
<code>npm run css:watch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
ctrl

| Kedua -dua pilihan ini juga membuat peta sumber dalam binaan/css/main.css.map yang merujuk kepada fail sumber asal dalam alat pemaju. CSS termampat peringkat pengeluaran tanpa peta sumber boleh disusun menggunakan arahan berikut:

Untuk maklumat lanjut, lihat fail ReadMe.md.

Sekiranya anda menggantikan SASS dengan POSTCSS?

pengkompil SASS tidak mempunyai masalah, tetapi sila pertimbangkan faktor -faktor berikut.
<code>npm run css:build</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dependensi modul

Versi terbaru Dart Sass boleh dipasang secara global menggunakan Node.js NPM Package Manager:

<code>npm run css:dev</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

menyusun kod SASS .SCSS dengan arahan berikut:

<code>npm run css:watch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Secara automatik menjana peta sumber (--No-Source-Map akan menutupnya) atau menambah-Watch untuk menyusunnya secara automatik apabila fail sumber berubah.

Versi terbaru ruang pemasangan SASS kurang dari 5MB.

POSTCSS perlu memerlukan kurang sumber, dan pengkompil gaya SASS asas dengan awalan automatik dan pemampatan memerlukan kurang daripada 1MB ruang. Malah, folder Node_modules anda akan berkembang menjadi lebih dari 60MB dan akan meningkat dengan pesat apabila lebih banyak plugin ditambah. Ini terutamanya mengenai memasang kebergantungan lain dalam npm. Walaupun postcss tidak boleh menggunakannya, ia tidak boleh dianggap sebagai alternatif yang ringan. Walau bagaimanapun, jika anda sudah menggunakan PostCSS untuk AutoPrefixer atau tujuan lain, anda mungkin tidak memerlukan SASS.

Kelajuan pemprosesan

pengkompil SASS berasaskan Ruby yang perlahan telah lama hilang, dan versi terkini menggunakan runtime dart yang disusun.

Ia sangat cepat

. Postcss adalah JavaScript tulen, dan sementara tanda aras akan berubah, ia boleh menjadi tiga kali lebih lambat apabila menyusun kod sumber yang sama.

Walau bagaimanapun, jika anda sudah menjalankan postcss selepas SASS, perbezaan kelajuan ini akan kurang ketara. Proses dua peringkat mungkin lebih perlahan daripada menggunakan postcss sahaja, kerana banyak kerjanya melibatkan tokenisasi sifat CSS.

custom

Bahasa Sass mengandungi sejumlah besar fungsi, termasuk pembolehubah, bersarang, bahagian, pencampuran, dll. Tetapi terdapat beberapa kelemahan:

Anda tidak dapat dengan mudah menambah ciri -ciri baru.
  1. Anda mungkin mahu mempunyai pilihan untuk menukar warna HSLA ke RGB. Menulis fungsi tersuai mungkin mungkin, tetapi keperluan lain akan menjadi mustahil - contohnya SVG dalam talian sebagai imej latar belakang.

    anda tidak dapat dengan mudah mengehadkan set ciri.
  2. Anda mungkin lebih suka bahawa pasukan anda tidak menggunakan bersarang atau @extend. Peraturan LINT akan membantu, tetapi mereka tidak akan menghalang SASS daripada menyusun fail .SCSS yang sah.

    PostCSS lebih mudah dikonfigurasikan.
postcss sendiri tidak melakukan apa -apa. Ciri -ciri pemprosesan memerlukan satu atau lebih plugin yang tersedia. Kebanyakan plugin melakukan tugas tunggal, jadi jika anda tidak memerlukan bersarang, jangan tambah plugin bersarang. Jika perlu, anda boleh menulis pemalam anda sendiri menggunakan modul JavaScript standard yang mengambil kesempatan daripada keupayaan Node.js.

Pasang POSTCSS

PostCSS boleh digunakan dengan Webpack, Parcel, Gulp.js, dan alat binaan lain, tetapi tutorial ini menunjukkan cara menjalankannya dari baris arahan.

Jika perlu, gunakan NPM init untuk memulakan projek node.js baru. Sediakan postcss dengan memasang modul berikut untuk melaksanakan parsing asas.

seperti projek sampel, postcss dan pluginnya dipasang secara tempatan. Ini adalah pilihan praktikal jika projek anda mungkin mempunyai keperluan penyusunan yang berbeza.

Nota: PostCSS hanya boleh dijalankan dari fail JavaScript, tetapi modul PostCSS-CLI menyediakan pembungkus yang boleh dipanggil dari baris arahan. Modul POSTCSS-SCSS membolehkan PostCSS membaca fail .SCSS tetapi tidak menukarnya.

Konfigurasi AutoPrefixer

AutoPrefixer menggunakan BrowsersList untuk menentukan awalan vendor mana yang diperlukan berdasarkan senarai pelayar yang anda sokong. Cara paling mudah adalah untuk menentukannya sebagai array "Browserslist" dalam Package.json. Contoh berikut menambah awalan vendor apabila mana -mana penyemak imbas mempunyai sekurang -kurangnya 2% daripada bahagian pasaran:

<code>npm run css:dev</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

membina pertama anda

anda biasanya akan mempunyai satu fail SASS .SCSS yang mengimport semua fail separa/komponen yang diperlukan. Contohnya:

<code>npm run css:watch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Penyusunan boleh dimulakan dengan menjalankan postcss NPX, diikuti dengan fail input, -fail -fail, dan sebarang pilihan yang diperlukan. Contohnya:

Perintah ini:
<code>npm run css:build</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

analisis./src/scss/main.scss
  1. output ke ./build/css/main.css
  2. tetapkan pembolehubah persekitaran NODE_ENV untuk pembangunan
  3. Output Fail Map Sumber Luaran
  4. tetapkan Output dan Mesej Ralat Terperinci
  5. Tetapkan parser SASS POSTCSS-SCSS, dan
  6. Gunakan plugin PostCSS-Advanced-Variables, PostCSS-Nested dan AutoPrefixer untuk mengendalikan bahagian, pembolehubah, pencampuran, bersarang dan autoprefixer
  7. Sebagai alternatif, anda boleh menambah -Watch untuk disusun secara automatik apabila mengubah suai fail .scss.

Buat fail konfigurasi postcss

Untuk senarai plugin yang lebih lama, baris arahan dengan cepat boleh menjadi sukar untuk dikendalikan. Anda boleh menentukannya sebagai skrip NPM, tetapi fail konfigurasi PostCSS adalah pilihan yang lebih mudah yang menawarkan kemungkinan lain.

Fail konfigurasi PostCSS adalah fail modul JavaScript bernama Postcss.config.js, biasanya disimpan dalam direktori akar projek (atau apa sahaja direktori yang anda jalankan dari Postcss). Modul mesti mengeksport fungsi tunggal:

Ia melewati objek CFG dengan sifat yang ditetapkan oleh arahan POSTCSS. Contohnya:
<code>npm install -g sass</code>
Salin selepas log masuk
Salin selepas log masuk

anda boleh menyemak sifat -sifat ini dan bertindak balas dengan sewajarnya - sebagai contoh, untuk menentukan sama ada anda sedang berjalan dalam mod pembangunan dan sama ada anda memproses fail input .SCSS:

<code>sass [input.scss] [output.css]</code>
Salin selepas log masuk
Salin selepas log masuk

Fungsi mesti mengembalikan objek yang nama hartanya sepadan dengan pilihan baris perintah PostCSS-CLI. Fail konfigurasi berikut menyalin arahan permulaan cepat yang digunakan di atas:

<code>npm install --save-dev postcss postcss-cli postcss-scss postcss-advanced-variables postcss-nested autoprefixer</code>
Salin selepas log masuk
Salin selepas log masuk

anda kini boleh menjalankan postcss dengan arahan yang lebih pendek:

<code>"browserslist": [
  "> 2%"
],</code>
Salin selepas log masuk
Salin selepas log masuk

Berikut adalah beberapa perkara yang perlu diperhatikan:

<code>// 根Sass文件
// src/scss/main.scss
@import '_variables';
@import '_reset';
@import 'components/_card';
// 等。</code>
Salin selepas log masuk
Salin selepas log masuk

-Verbose adalah pilihan: ia tidak ditetapkan dalam postcss.config.js.

    parsing sintaks SASS akan digunakan hanya apabila input adalah fail .scss. Jika tidak, ia mungkir kepada CSS standard.
  • Peta sumber akan dikeluarkan hanya apabila --Env ditetapkan untuk pembangunan.
  • Anda masih boleh menambah -Watch untuk kompilasi automatik.
  • Jika anda lebih suka meletakkan postcss.config.js dalam direktori lain, anda boleh merujuknya dengan pilihan -config -contohnya --config /mycfg /. Dalam projek contoh, konfigurasi di atas adalah dalam config/postcss.config.js. Ia dirujuk dengan menjalankan NPM Run CSS: Basic, yang memanggil:
<code>npm run css:dev</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Tambah lebih banyak plugin

Bahagian berikut menyediakan beberapa contoh plugin PostCSS yang boleh menghuraikan sintaks .SCSS Tambahan atau menyediakan fungsi pemprosesan di luar skop pengkompil SASS.

menggunakan token reka bentuk

Token reka bentuk adalah cara bebas teknologi untuk menyimpan pembolehubah seperti fon, warna, jarak, dll. Anda boleh menyimpan pasangan nilai nama token dalam fail JSON:

<code>npm run css:watch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

kemudian rujuk mereka dalam mana -mana web, Windows, MacOS, iOS, Linux, Android, atau aplikasi lain.

SASS tidak secara langsung menyokong token reka bentuk, tetapi objek JavaScript dengan atribut pembolehubah (yang memegang pasangan nilai nama) boleh diserahkan kepada plugin postcss yang sedia ada PostCSS:

<code>npm run css:build</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Plugin menukarkan semua nilai ke dalam pembolehubah SASS $ global yang boleh digunakan di mana -mana bahagian. Nilai sandaran boleh ditetapkan untuk memastikan bahawa pembolehubah tersedia walaupun ia hilang dalam token. Contohnya:

<code>npm install -g sass</code>
Salin selepas log masuk
Salin selepas log masuk
Pemboleh ubah token kemudiannya boleh dirujuk dalam mana -mana fail .scss. Contohnya:

Dalam Projek Contoh, fail Token.json ditakrifkan, yang dimuatkan dan digunakan semasa menjalankan NPM Run CSS: Dev.
<code>sass [input.scss] [output.css]</code>
Salin selepas log masuk
Salin selepas log masuk

tambah sokongan peta sass

peta sass adalah objek nilai utama. Fungsi peta-get dapat mencari nilai mengikut nama.

Contoh berikut mentakrifkan titik break query media sebagai peta sass dan menggunakan respons mixin untuk mendapatkan nilai bernama:

Ciri -ciri lalai dan pengubahsuaian pertanyaan media kemudiannya boleh ditakrifkan dalam pemilih yang sama. Contohnya:
<code>npm install --save-dev postcss postcss-cli postcss-scss postcss-advanced-variables postcss-nested autoprefixer</code>
Salin selepas log masuk
Salin selepas log masuk

disusun ke CSS:

<code>"browserslist": [
  "> 2%"
],</code>
Salin selepas log masuk
Salin selepas log masuk

Plugin Postcss-Map-Get menambah pemprosesan peta sass. Pasangnya dengan arahan berikut:

<code>// 根Sass文件
// src/scss/main.scss
@import '_variables';
@import '_reset';
@import 'components/_card';
// 等。</code>
Salin selepas log masuk
Salin selepas log masuk

kemudian tambahkannya ke postcss.config.js:

<code>npx postcss ./src/scss/main.scss \
    --output ./build/css/main.css \
    --env development \
    --map \
    --verbose \
    --parser postcss-scss \
    --use postcss-advanced-variables postcss-nested autoprefixer</code>
Salin selepas log masuk

tambah pengoptimuman pertanyaan media

<code>// postcss.config.js
module.exports = cfg => {

  // ... 配置 ...

};</code>
Salin selepas log masuk
Oleh kerana kami telah menambah pertanyaan media, ia akan berguna untuk menggabungkannya dan menyusunnya dalam keutamaan mudah alih. Sebagai contoh, CSS berikut:

boleh digabungkan ke dalam:

<code>{
  cwd: '/home/name/postcss-demo',
  env: 'development',
  options: {
    map: undefined,
    parser: undefined,
    syntax: undefined,
    stringifier: undefined
  },
  file: {
    dirname: '/home/name/postcss-demo/src/scss',
    basename: 'main.scss',
    extname: '.scss'
  }
}</code>
Salin selepas log masuk

Ini tidak mungkin dalam SASS, tetapi boleh dilaksanakan menggunakan plugin PostCSS PostCSS-Sort-Media-Queries. Pasangnya dengan arahan berikut:

<code>// postcss.config.js
module.exports = cfg => {

  const
    dev = cfg.env === 'development',
    scss = cfg.file.extname === '.scss';

  // ... 配置 ...

};</code>
Salin selepas log masuk

kemudian tambahkannya ke postcss.config.js:

<code>// postcss.config.js
module.exports = cfg => {

  const
    dev = cfg.env === 'development',
    scss = cfg.file.extname === '.scss';

  return {

    map: dev ? { inline: false } : false,
    parser:  scss ? 'postcss-scss' : false,
    plugins: [
      require('postcss-advanced-variables')(),
      require('postcss-nested')(),
      require('autoprefixer')()
    ]

  };

};</code>
Salin selepas log masuk

Tambah pemprosesan aset

<code>npx postcss ./src/scss/main.scss \
    --output ./build/css/main.css \
    --env development \
    --verbose</code>
Salin selepas log masuk
Pengurusan aset tidak disediakan di SASS, tetapi aset postcss memudahkannya. Plugin mengepam URL imej CSS, menambah penjelasan cache, mentakrifkan saiz imej, dan menggabungkan fail menggunakan notasi Base64. Contohnya:

disusun sebagai:

<code>npx postcss src/scss/main.scss \
    --output build/css/main.css \
    --env development \
    --verbose \
    --config ./config/</code>
Salin selepas log masuk
Gunakan arahan berikut untuk memasang pemalam:

<code>{

  "font-size": "16px",

  "font-main": "Roboto, Oxygen-Sans, Ubuntu, sans-serif",
  "lineheight": 1.5,

  "font-code": "Menlo, Consolas, Monaco, monospace",
  "lineheight-code": 1.2,

  "color-back": "#f5f5f5",
  "color-fore": "#444"

}</code>
Salin selepas log masuk
kemudian tambahkannya ke postcss.config.js. Dalam kes ini, plugin diarahkan untuk mencari imej dalam src/ imej/ direktori:

<code>// PostCSS配置
module.exports = cfg => {

  // 将令牌导入为Sass变量
  const variables = require('./tokens.json'); // 新的

  const
    dev = cfg.env === 'development',
    scss = cfg.file.extname === '.scss';

  return {

    map: dev ? { inline: false } : false,
    parser:  scss ? 'postcss-scss' : false,
    plugins: [
      require('postcss-advanced-variables')({ variables }), // 已更新
      require('postcss-nested')(),
      require('autoprefixer')()
    ]

  };

};</code>
Salin selepas log masuk
Tambah mampatan

<code>// 如果tokens.json中未设置“color-back”值,则将默认背景颜色设置为#FFF
$color-back: #fff !default;</code>
Salin selepas log masuk
Pasang cssnano menggunakan arahan berikut:

kemudian tambahkannya ke postcss.config.js. Dalam kes ini, pemampatan hanya akan dilakukan jika node_env ditetapkan kepada apa -apa selain pembangunan:

<code>npm run css:dev</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

tetapan --Env ke pemampatan pencetus pengeluaran (dan menghilangkan peta sumber):

<code>npm run css:watch</code>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Dalam Projek Contoh, pengeluaran CSS boleh disusun dengan menjalankan NPM Run CSS: Build.

berhijrah ke postcss?

POSTCSS adalah alat yang kuat dan boleh dikonfigurasikan yang boleh menyusun fail .scss dan meningkatkan (atau membatasi) bahasa SASS standard. Jika anda sudah menggunakan PostCSS untuk AutoPrefixer, anda boleh mengeluarkan sepenuhnya pengkompil SASS semasa mengekalkan sintaks kegemaran anda.

lebih banyak pautan:

    Rujukan Bahasa SASS
  • halaman rumah postcss
  • senarai plugin postcss
  • direktori yang boleh dicari untuk plug-in postcss
  • Plugin Postcss pada npmjs.com
  • menulis plugin postcss
  • POSTCSS CLI
soalan yang sering ditanya mengenai postcss

Apa itu Postcss? POSTCSS adalah alat untuk menukar gaya menggunakan plugin JavaScript. Ia biasanya digunakan dalam pembangunan web dan menggunakan pelbagai plugin untuk mengendalikan CSS untuk meningkatkan dan memperluaskan fungsi CSS standard.

Bagaimana postcss berbeza daripada preprocessors CSS tradisional seperti sass atau kurang? Tidak seperti preprocessors tradisional, postcss sendiri bukan preprocessor, tetapi alat yang menggunakan pemalam untuk menukar CSS. Ia membolehkan pemaju menggunakan kaedah modular dan disesuaikan dengan memilih hanya plugin yang diperlukan untuk projek tertentu.

Apakah beberapa kes penggunaan biasa untuk postcss? PostCSS biasanya digunakan untuk tugas -tugas seperti awalan automatik, pemeriksaan kod, mampatan, penggantian berubah -ubah, dan keserasian sintaks CSS masa depan. Ia menyediakan sistem yang fleksibel dan modular untuk meningkatkan fungsi CSS standard.

bagaimana memasang dan menyediakan postcss untuk projek saya? Anda boleh menggunakan NPM (Pengurus Pakej Node) untuk memasang PostCSS dan pluginnya. Selepas pemasangan, anda perlu membuat fail konfigurasi (biasanya dipanggil postcss.config.js) untuk menentukan plugin untuk projek dan tetapannya.

Apakah awalan automatik dan mengapa ia berguna dalam postcss? Awalan automatik adalah proses di mana PostCSS secara automatik menambah awalan vendor ke sifat CSS untuk memastikan keserasian dengan pelayar yang berbeza. Ini membantu pemaju menulis kod bersih, mengelakkan awalan khusus vendor manual.

Bolehkah saya menggunakan postcss dengan preprocessors seperti sass atau kurang? Ya, postcss boleh digunakan dengan preprocessors seperti sass atau kurang. Anda boleh memanfaatkan kedua -duanya dengan memproses lagi output preprocessor dengan menggunakan plugin PostCSS.

Atas ialah kandungan terperinci Cara menggunakan postcss sebagai alternatif yang boleh dikonfigurasikan untuk sass. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan