CSS Academy · Pelajaran

Pemalam PostCSS Tersuai

Tulis pemalam PostCSS sendiri untuk mentransformasikan nod CSS secara terprogram.

Pelajaran 3 daripada 412 langkah

Pemalam PostCSS Tersuai ialah pelajaran CSS Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran CSS Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus CSS Academy merangkumi sejumlah 4 pelajaran.

Mengapa Menulis Plugin Tersuai?

Apabila tiada plugin PostCSS sedia ada yang memenuhi keperluan anda — sama ada transformasi CSS khusus projek, pembantu migrasi atau peraturan lint tersuai — penulisan plugin tersuai memberikan anda akses terus kepada AST CSS.

Struktur Plugin

Plugin PostCSS ialah fungsi yang menerima nod Root (CSS yang telah dihuraikan) dan, secara pilihan, objek Result. Gunakan kilang postcss.plugin() atau pendekatan fungsi terus moden:

// my-plugin.js
const plugin = () => {
  return {
    postcssPlugin: 'my-plugin',
    Declaration(decl) {
      // Called for every declaration node
    },
    Rule(rule) {
      // Called for every rule node
    }
  };
};
plugin.postcss = true;
module.exports = plugin;

Melawati Pengisytiharan

Transformasikan setiap pengisytiharan color:

const plugin = () => ({
  postcssPlugin: 'rem-converter',
  Declaration(decl) {
    if (decl.prop === 'font-size' && decl.value.endsWith('px')) {
      const px = parseFloat(decl.value);
      decl.value = `${px / 16}rem`;
    }
  }
});

Menambahkan Peraturan Baharu

Suntik peraturan baharu selepas setiap peraturan .btn:

Rule(rule) {
  if (rule.selector.includes('.btn')) {
    const focusRule = rule.cloneAfter();
    focusRule.selector = rule.selector + ':focus';
  }
}

Membuang Pengisytiharan

Buang semua pengisytiharan color: red (plugin penyahpepijatan/pembersihan):

Declaration(decl) {
  if (decl.prop === 'color' && decl.value === 'red') {
    decl.remove();
  }
}

Pembantu PostCSS

PostCSS menyediakan kaedah pembantu pada nod:

  • node.remove(): membuang nod
  • node.replaceWith(newNode): menggantikan nod
  • node.cloneBefore()/cloneAfter(): menyisipkan klon
  • postcss.decl()/rule()/atRule(): mencipta nod baharu

Plugin Tak Segerak

Plugin PostCSS boleh berjalan secara tak segerak — berguna apabila anda perlu membaca fail atau membuat permintaan rangkaian:

async Declaration(decl, helpers) {
  if (decl.prop === 'icon') {
    const svg = await readFile(`icons/${decl.value}.svg`);
    decl.replaceWith(helpers.decl({ prop: 'background', value: `url(${svg})` }));
  }
}

Menguji Plugin PostCSS

Uji plugin menggunakan pakej postcss secara terus:

const postcss = require('postcss');
const plugin = require('./my-plugin');

test('converts px to rem', () => {
  const input = 'p { font-size: 16px; }';
  const result = postcss([plugin()]).process(input, { from: undefined });
  expect(result.css).toBe('p { font-size: 1rem; }');
});

Pilihan Plugin

Terima pilihan konfigurasi dengan mengambil argumen dalam kilang plugin:

const plugin = (opts = {}) => ({
  postcssPlugin: 'configurable',
  Declaration(decl) {
    if (decl.prop === opts.property) {
      decl.value = opts.replacement;
    }
  }
});

Menerbitkan Plugin PostCSS

Plugin PostCSS mengikut konvensyen penamaan: postcss-plugin-name. Plugin ini diterbitkan kepada npm dan ditambahkan pada repositori PostCSS. Untuk alat dalaman, simpan plugin tersebut sebagai fail setempat dalam projek anda.

Semakan Pantas

Pelawat PostCSS manakah yang dipanggil untuk setiap pasangan sifat: nilai CSS dalam lembaran gaya?

Imbas Kembali

Plugin PostCSS tersuai menggunakan kaedah pelawat untuk memproses nod AST CSS. Declaration(decl) untuk pasangan sifat:nilai, Rule(rule) untuk blok pemilih dan AtRule() untuk peraturan @. Gunakan kaedah nod seperti remove(), replaceWith() dan cloneAfter() untuk mengubah suai pepohon CSS. Uji plugin secara terus dengan pakej postcss.

Percuma untuk bermula

Pelajari CSS dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
40
Pelajaran
159

Soalan Lazim

Adakah pelajaran “Pemalam PostCSS Tersuai” percuma?

Ya — teks penuh “Pemalam PostCSS Tersuai” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus CSS Academy, tingkat taraf kepada CoddyKit PRO. Kursus CSS Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pemalam PostCSS Tersuai”?

Tulis pemalam PostCSS sendiri untuk mentransformasikan nod CSS secara terprogram. Anda berlatih CSS Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan CSS Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran CSS Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.

Berapa lamakah pelajaran “Pemalam PostCSS Tersuai” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran CSS Academy ini?

Ya. Setiap pelajaran CSS Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Fungsi PostCSS dan Cara Ia Berfungsi
  2. Autoprefixer dan cssnano
  3. Pemalam PostCSS Tersuai
  4. PostCSS dalam Vite dan Webpack
← Kembali ke CSS Academy