Seravon esimerkkiprojekti kehittäjien tueksi

Työpöytä, misä kaksi kannettavaa. Toisen näppäimistöm päällä on käsi.

Seravo on jo pitkään tarjonnut WordPress-kehittäjille valmiin projektipohjan, joka toimii perustana uusien sivustojen luomiselle ja kehitykselle. Projektipohja löytyy palvelimelta valmiiksi asennettuna, kun tilaat WordPress-palvelupaketin Seravolta.

Projektin työkaluihin kuuluvat mm. Git, Composer, Nginx ja Docker. Projektipohjasta on kuitenkin puuttunut esimerkki siitä, miten projektin juuresta voidaan hallita koko projektin build-prosessia.

Tähän vastauksena olemme julkaisseet WordPress-kehittäjille esimerkkiprojektin, jonka tavoitteena on esitellä aiempaa käytännöllisempi projektipohja. Uudessa projektipohjassa käytetään WordPress-yhteisön työkaluja mahdollisimman paljon:

Esimerkkiprojektin keskeisimmät ominaisuudet

Esimerkkiprojektin runko on täsmälleen sama kuin Seravon projektipohja, mutta siihen on lisätty muutama asia:

  • Esimerkkilohko-lisäosa käyttäen @wordpress/create-block-työkalua.
  • Esimerkkiteema, johon on lisätty JS- ja CSS-tiedostoja sekä webpack.config.js-tiedosto niiden hallintaan.
  • NPM workspaces määrittelee ylläolevat omiksi ”työtiloiksi” projektin juuressa olevan package.json avulla.

Esimerkkiprojektin juuresta löytyy oma readme-tiedosto, josta löytyy tarkempaa tietoa.

Miten NPM workspaces toimii?

Projektin juuressa package.json-tiedostossa määritellään projektin kaikki työtilat, esimerkiksi:

"workspaces": [
    "htdocs/wp-content/plugins/example-blocks",
    "htdocs/wp-content/themes/example-theme"
]

Ja vastaavasti sekä esimerkkilohkosta että esimerkkiteemasta löytyvät niiden omat package.json-tiedostot, joissa määritellään niiden tarvitsemat NPM-paketit ja skriptit.

Ideana on, että kaikki projektin osat (lisäosa ja teema) voisivat toimia itsenäisinä yksikköinä. Silti niitä kaikkia voidaan hallita projektin juuresta samaan aikaan.

Oleellista on määrittää name-kentän arvo lisäosan ja teeman package.json-tiedostoissa ja käyttää tätä projektin juuressa olevassa package.json-tiedostossa.

NPM-komentojen käyttö projektin juuresta

Suorittamalla komennon käyttäen -w-valitsinta on mahdollista ajaa annettu komento kyseisen työtilan kontekstissa. Esimerkiksi kun projektin juuressa ajetaan seuraava komento:

npm run build -w=example-blocks
  • Tämä suorittaa build-skriptin, joka on määritelty tiedostossa ./htdocs/wp-content/plugins/example-blocks/package.json.
  • Huomaa, että ”example-blocks” on oltava sama kuin name-kentän arvo yllä olevassa package.json-tiedostossa.

Vastaavasti käyttäen --workspaces-valitsinta on mahdollista ajaa annettu komento kaikissa työtiloissa. Esimerkiksi seuraava komento ajaa lint:css kaikissa työtiloissa:

npm run lint:css --workspaces

@wordpress/scripts ja sen käyttö

Esimerkkiprojektissa kaikkien työtilojen build-prosessiin on käytetty @wordpress/scripts NPM-pakettia.

Kun esimerkkilohko-lisäosa on luotu @wordpress/create-block-paketilla, niin kaikki lisäosan build-prosessiin liittyvät toimenpiteet tapahtuvat automaattisesti.

Vastaavasti teema tarvitsee oman webpack.config.js-tiedoston, jossa määritellään tarkemmin mitä JS ja CSS -tiedostoja teema pitää sisällään.

Ylikirjoitamme osan @wordpress/scripts-paketin asetuksista omilla määrityksillämme:

  • Määritetään mistä löytyvät teema CSS- ja JavaScript-tiedostot (entry points).
  • Lisätty webpack-remove-empty-scripts-lisäosa, jotta CSS-tiedostoihin liittyviä ylimääräisiä .js-tiedostoja ei jää jäljelle.

Tarkemmin tästä kokonaisuudesta voi lukea WordPressin kehittäjädokumentaation build process -artikkelista.

Yhteenveto

Projektipohjan tarkempi dokumentaatio löytyy readme-tiedostosta.

Tämä esimerkkiprojekti on toki vain yksi esimerkki siitä, miten WordPress-projektinsa voi organisoida, mutta toivomme, että siitä on asiakkaillemme hyötyä. Mikäli tästä herää kysymyksiä, vastaamme niihin mielellämme!