CSS Academy · Les

Aangepaste PostCSS-plug-ins

Schrijf uw eigen PostCSS-plug-in om CSS-nodes programmatisch te transformeren.

Les 3 van 412 stappen

Aangepaste PostCSS-plug-ins is een gratis CSS Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject CSS Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus CSS Academy bevat in totaal 4 lessen.

Waarom een aangepaste plug-in schrijven?

Wanneer geen bestaande PostCSS-plug-in voorziet in uw behoefte — bijvoorbeeld een projectspecifieke CSS-transformatie, een hulpmiddel voor migratie of een aangepaste lintregel — geeft een aangepaste plug-in u rechtstreeks toegang tot de CSS-AST.

Structuur van een plug-in

Een PostCSS-plug-in is een functie die een Root-knoop (de ontlede CSS) en optioneel een Result-object ontvangt. Gebruik de fabriek postcss.plugin() of de moderne aanpak met een rechtstreekse functie:

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

Declaraties doorlopen

Transformeer elke color-declaratie:

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

Nieuwe regels toevoegen

Voeg na elke .btn-regel een nieuwe regel in:

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

Declaraties verwijderen

Verwijder alle color: red-declaraties (plug-in voor debuggen en opschonen):

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

PostCSS-hulpmethoden

PostCSS biedt hulpmethoden op knopen:

  • node.remove(): verwijdert de knoop
  • node.replaceWith(newNode): vervangt een knoop
  • node.cloneBefore()/cloneAfter(): voegt een kloon in
  • postcss.decl()/rule()/atRule(): maakt nieuwe knopen

Asynchrone plug-ins

PostCSS-plug-ins kunnen asynchroon zijn — handig wanneer u bestanden moet lezen of netwerkverzoeken moet uitvoeren:

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-plug-ins testen

Test plug-ins rechtstreeks met het pakket 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; }');
});

Opties voor plug-ins

Accepteer configuratieopties door een argument op te nemen in de plug-infabriek:

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

PostCSS-plug-ins publiceren

PostCSS-plug-ins volgen een naamgevingsconventie: postcss-plugin-name. Ze worden gepubliceerd naar npm en toegevoegd aan de PostCSS-opslagplaats. Houd ze voor interne hulpmiddelen als lokale bestanden in uw project.

Snelle controle

Welke PostCSS-bezoeker wordt aangeroepen voor elk CSS-paar van eigenschap en waarde in de stylesheet?

Samenvatting

Aangepaste PostCSS-plug-ins gebruiken bezoekersmethoden om knopen in de CSS-AST te verwerken. Declaration(decl) voor paren van eigenschap en waarde, Rule(rule) voor selectorblokken en AtRule() voor @-regels. Gebruik knoopmethoden zoals remove(), replaceWith() en cloneAfter() om de CSS-boom aan te passen. Test plug-ins rechtstreeks met het pakket postcss.

Gratis beginnen

Leer CSS met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “Aangepaste PostCSS-plug-ins” gratis?

Ja — de volledige tekst van “Aangepaste PostCSS-plug-ins” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus CSS Academy wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus CSS Academy bevat in totaal 4 lessen.

Wat leer ik in “Aangepaste PostCSS-plug-ins”?

Schrijf uw eigen PostCSS-plug-in om CSS-nodes programmatisch te transformeren. Je oefent met CSS Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met CSS Academy te beginnen?

Ervaring vooraf is niet nodig. CSS Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Aangepaste PostCSS-plug-ins”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over CSS Academy?

Ja. Elke les over CSS Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Wat PostCSS doet en hoe het werkt
  2. Autoprefixer en cssnano
  3. Aangepaste PostCSS-plug-ins
  4. PostCSS in Vite en Webpack
← Terug naar CSS Academy