0Pricing
CSS Academy · บทเรียน

ปลั๊กอิน PostCSS แบบกำหนดเอง

เขียนปลั๊กอิน PostCSS ของคุณเองเพื่อแปลงโหนด CSS ด้วยโปรแกรม

ปลั๊กอิน PostCSS แบบกำหนดเอง เป็นบทเรียน CSS Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน CSS Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดจึงเขียนปลั๊กอินแบบกำหนดเอง

เมื่อไม่มีปลั๊กอิน PostCSS ที่มีอยู่แล้วตอบโจทย์ของคุณ ไม่ว่าจะเป็นการแปลง CSS เฉพาะโครงการ ตัวช่วยย้ายระบบ หรือกฎตรวจสอบแบบกำหนดเอง การเขียนปลั๊กอินเองจะช่วยให้เข้าถึง AST ของ CSS ได้โดยตรง

โครงสร้างปลั๊กอิน

ปลั๊กอิน PostCSS เป็นฟังก์ชันที่รับโหนด Root (CSS ที่แยกวิเคราะห์แล้ว) และออบเจ็กต์ Result ที่อาจมีหรือไม่มีก็ได้ ใช้ตัวสร้าง postcss.plugin() หรือแนวทางฟังก์ชันโดยตรงแบบใหม่:

// 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;

การไล่ดูการประกาศ

แปลงการประกาศ 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`;
    }
  }
});

การเพิ่มกฎใหม่

แทรกกฎใหม่หลังจากกฎ .btn ทุกรายการ:

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

การลบการประกาศ

ลบการประกาศ color: red ทั้งหมด (ปลั๊กอินสำหรับแก้ไขข้อผิดพลาดและทำความสะอาด):

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

ตัวช่วยของ PostCSS

PostCSS มีเมธอดตัวช่วยบนโหนดต่าง ๆ:

  • node.remove(): ลบโหนด
  • node.replaceWith(newNode): แทนที่โหนด
  • node.cloneBefore()/cloneAfter(): แทรกโคลน
  • postcss.decl()/rule()/atRule(): สร้างโหนดใหม่

ปลั๊กอินแบบอะซิงโครนัส

ปลั๊กอิน PostCSS สามารถทำงานแบบอะซิงโครนัสได้ ซึ่งมีประโยชน์เมื่อต้องอ่านไฟล์หรือส่งคำขอเครือข่าย:

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})` }));
  }
}

การทดสอบปลั๊กอิน PostCSS

ทดสอบปลั๊กอินโดยใช้แพ็กเกจ postcss โดยตรง:

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; }');
});

ตัวเลือกของปลั๊กอิน

รับตัวเลือกการกำหนดค่าโดยรับอาร์กิวเมนต์ในตัวสร้างปลั๊กอิน:

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

การเผยแพร่ปลั๊กอิน PostCSS

ปลั๊กอิน PostCSS ใช้รูปแบบการตั้งชื่อดังนี้: postcss-plugin-name โดยเผยแพร่ไปยัง npm และเพิ่มไว้ในที่เก็บ PostCSS สำหรับเครื่องมือภายใน ให้เก็บเป็นไฟล์ภายในโครงการของคุณ

ตรวจสอบอย่างรวดเร็ว

ตัวเยี่ยมชมของ PostCSS ใดถูกเรียกใช้กับคู่คุณสมบัติ:ค่าแต่ละคู่ในไฟล์สไตล์

สรุปทบทวน

ปลั๊กอิน PostCSS แบบกำหนดเองใช้เมธอดตัวเยี่ยมชมเพื่อประมวลผลโหนด AST ของ CSS โดย Declaration(decl) ใช้กับคู่คุณสมบัติ:ค่า Rule(rule) ใช้กับบล็อกตัวเลือก และ AtRule() ใช้กับกฎที่ขึ้นต้นด้วย @ ใช้เมธอดของโหนด เช่น remove(), replaceWith() และ cloneAfter() เพื่อแก้ไขโครงสร้างต้นไม้ CSS ทดสอบปลั๊กอินด้วยแพ็กเกจ postcss โดยตรง

คำถามที่พบบ่อย

บทเรียน “ปลั๊กอิน PostCSS แบบกำหนดเอง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ปลั๊กอิน PostCSS แบบกำหนดเอง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส CSS Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส CSS Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ปลั๊กอิน PostCSS แบบกำหนดเอง”

เขียนปลั๊กอิน PostCSS ของคุณเองเพื่อแปลงโหนด CSS ด้วยโปรแกรม คุณปฏิบัติ CSS Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน CSS Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน CSS Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ปลั๊กอิน PostCSS แบบกำหนดเอง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน CSS Academy นี้ได้ไหม

ได้ บทเรียน CSS Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. PostCSS ทำอะไรและทำงานอย่างไร
  2. Autoprefixer และ cssnano
  3. ปลั๊กอิน PostCSS แบบกำหนดเอง
  4. PostCSS ใน Vite และ Webpack
← กลับไปที่ CSS Academy