ปลั๊กอิน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- PostCSS ทำอะไรและทำงานอย่างไร
- Autoprefixer และ cssnano
- ปลั๊กอิน PostCSS แบบกำหนดเอง
- PostCSS ใน Vite และ Webpack