Een TextMate-bundel maken om eenvoudig uw WordPress-project te verpakken

Als u een WordPress-thema of plug-in hebt ontwikkeld, weet u hoe snel uw codebase in slechts een korte tijd kan groeien.

Je begint met slechts een paar PHP-, JavaScript- en CSS-bestanden. Dan merk je dat je beeldelementen maakt en ze toevoegt aan je codebasis samen met hun tegenhangers in Photoshop-bestanden. Na een tijdje zul je ook andere PHP-bibliotheken van derden opnemen. Wanneer u dan eindelijk klaar bent om uw WordPress-project te verzenden, krijgt u uiteindelijk een web van meerdere bestandstypen zoals * .php, * .css, * .scss, * .js, * .min.js, * .png en * .psd, misschien heb je een aantal verborgen bestanden zoals .DS_Store.

Je zou uiteindelijk je codebase moeten opruimen voordat je ze allemaal opgeeft voor je gebruikers. Normaal gesproken betekent dit alleen dat u uw bestanden dupliceert en vervolgens elke map scant die alle ongewenste bestanden verwijdert. U archiveert uw project dan misschien met behulp van een app van derden om de verborgen bestanden te verwijderen.

Dit artikel zal je leren hoe je dit verpakkingsproces kunt automatiseren door een TextMate-bundel te bouwen die alles voor ons zou doen met een enkele sneltoets.

Dit artikel beschrijft enkele tips met betrekking tot TextMate, een geweldige codebewerker voor Macs. U kunt meer informatie over TextMate vinden op de website van MacroMate

Inleiding tot TextMate-bundels

Bundels in TextMate zijn als plug-ins in WordPress. WordPress-plug-ins bieden extra functionaliteit aan de WordPress-kern. Op dezelfde manier bieden TextMate-bundels extra functionaliteit voor TextMate, zoals het inkaderen van onderdelen van uw code voor een betere codeerervaring, of het uitvoeren van een bepaald proces wanneer een sneltoets wordt ingedrukt.

Een goede zaak met TextMate-bundels is dat u elke programmeertaal kunt gebruiken die lokaal beschikbaar is voor uw systeem. Sommige talen die standaard beschikbaar zijn voor Macs zijn Bash, Perl, Ruby en Python. Voor de toepassing van dit artikel zal ik Python gebruiken voor het coderen van de bundel.


Wat gaan we bouwen??

Voordat we beginnen met coderen, moeten we eerst afronden wat we willen dat onze bundel doet. We moeten in staat zijn om:

  • pakket ons hele project in een zip-bestand,
  • specificeer welke bestanden niet moeten worden opgenomen,
  • specificeer welke bestanden altijd moeten worden opgenomen, en
  • trigger dit met de sneltoets keuze + commando + verschuiving + s

Onze bundel maken

Laten we nu beginnen met het maken van onze bundel. Open de bundeleditor in de menubalk van TextMate (Bundels> Bundels bewerken ... ). Een venster zou moeten verschijnen met dat ziet er als volgt uit:

Open het bundelvenster en maak op dit moment een nieuw bestand aan in de menubalk (Bestand> Nieuw) selecteer vervolgens om een ​​nieuw te maken Bundel:

Standaard wordt uw bundel benoemd "De bundel van YourUserName", je kunt dit wijzigen in het rechterdeelvenster van de Bewerk bundel venster.

Ga met je bundel geselecteerd terug naar de menubalk en maak vervolgens een nieuw bestand aan (Bestand> Nieuw) maar selecteer deze keer Commando:

Verander de naam van uw "Untitled" commando in iets meer beschrijvend zoals "Package WP Project".

De versie die ik gebruik is 2,0-alpha.9503, de schermafbeeldingen hier kunnen afwijken van uw scherm, maar de inhoud moet hetzelfde zijn.

De commandocode

Vanaf het moment hebben we een nieuwe bundel met een opdracht die nog niets doet.

In de Bewerk het bundelvenster, klik op de opdracht die we zojuist hebben gemaakt. In het onderste deelvenster van het venster staat de code die wordt uitgevoerd wanneer onze opdracht wordt geactiveerd. Omdat de opdracht nieuw is, was TextMate zo vriendelijk om een ​​voorbeeld in te voegen Hallo Wereld code voor ons:

 #! / Systeem / Bibliotheek / Frameworks / Ruby.framework / Versies / 1.8 / usr / bin / ruby ​​-wKU zet 'Hallo wereld'

Verwijder die code en laten we beginnen met het schrijven van onze eigen code.


1. Shebang

Ten eerste moeten we specificeren welke tolk we moeten gebruiken voor onze code. Onze code staat in Python, dus we moeten dit als eerste regel van onze code plaatsen:

 #! / usr / bin / env python

2. Sommige opties

De belangrijkste functie van ons commando is uitgang a schoon ons project verpakken. We hebben een manier nodig om aan te geven welke typen bestanden wel of niet moeten worden opgenomen in ons output zip-bestand.

 # Bestanden om uitgesloten bestanden uit te sluiten = ['. *', '* .Psd', 'languages ​​/ *. Mo', 'languages ​​/ *. Po'] # Bestanden inclusief includeFiles = ['languages ​​/ en_US.mo', ' talen / en_US.po ']

De excludedFiles array specificeert geen verborgen bestanden, Photoshop-middelen en taalbestanden uit ons pakket op te nemen. We hebben hier taalbestanden opgenomen sinds je je project hebt getest, je hebt misschien meerdere taalbestanden gemaakt die je niet in je definitieve pakket wilt opnemen..

Aan de andere kant, de includedFiles array dwingt de opname van alleen Engelse taalbestanden (Engels).

U kunt deze arrays uitbreiden om deze aan te passen aan uw eigen behoeften. Als u bijvoorbeeld CodeKit in uw project gebruikt, wilt u mogelijk de instellingenbestanden van CodeKit uitsluiten codekit-config.json en config.rb


3. Projectvariabelen

Voordat we een van de projectbestanden kunnen archiveren, moeten we eerst weten waar ons TextMate-project zich bevindt. TextMate onthult enkele essentiële eigenschappen die toegankelijk zijn met Python's os bibliotheek:

 import os # De hoofddirectory van ons project projDir = os.environ ['TM_PROJECT_DIRECTORY'] # Projectnaam projName = projDir [projDir.rindex ('/') + 1:] # Project-moederdirectory projParentDir = projDir [: projDir.rindex (' / ')]

4. Maak het Zip-pakket

Het laatste stukje code is om de verpakking uit te voeren. TextMate zelf heeft niet de mogelijkheid om mappen te archiveren, maar gelukkig hebben Macs voor ons de ritssluiting gebruik van de commandoregel.

We gaan die opdracht gebruiken in ons Python-script:

 # Opmaak bestand uitsluiten / opnemen voor de opdrachtregel exclude = "voor f in uitgesloten Bestanden: uitsluiten + = '" * /' + f + '"' exclude = exclude.strip () include =" voor f in includedFiles: include + = '"* /' + f + '"' include = include.strip () # Verander de map os.chdir (projParentDir) # Verwijder het bestaande zip-bestand als os.path.exists (projDir + ".zip"): os.system ("rm" + projName + ".zip") # Zip it up os.system ("zip -rq9" + projName + ".zip" + projName + "-x" + exclude) os.system ("zip -rq9 "+ projName +" .zip "+ projName +" -i "+ include)

De opdrachteigenschappen

We zijn allemaal klaar met de code die de verpakking van ons project uitvoert. Nu hebben we een manier nodig om dit van binnenuit in het projectvenster te activeren. Het rechterdeelvenster van de Bewerk het bundelvenster bevat de eigenschappen van ons commando. Daar kunnen we een sneltoets voor deze opdracht toewijzen en ook een aantal andere gedragingen van onze opdracht wijzigen. Stel deze eigenschappen in het rechterdeelvenster in:

  • Key Equivalent naar keuze + commando + verschuiving + s
  • Invoer naar Niets
  • uitgang naar Weergeven in gereedschapstip

Probeer het

Sla je wijzigingen op (Bestand> Opslaan) en sluit de Bundelbewerkingsvenster.

Wanneer u uw project wilt inpakken voor implementatie, kunt u nu gewoon de sneltoets gebruiken keuze + commando + verschuiving + s. U hebt ook toegang tot de pakketopdracht door er naartoe te navigeren in de menubalk onder bundels.


Conclusie

In dit artikel hebben we een snellere manier gevonden om een ​​definitief zipbestand voor uw WordPress-project te maken door uw eigen TextMate-bundel te maken. Hopelijk kunt u dit gebruiken in uw ontwikkelworkflow om u tijd te besparen.

Ik hoop dat je dit artikel leuk vond. Ik stel elke feedback, opmerkingen en suggesties zeer op prijs.

Gebruik je deze methode in je codeerworkflow? Deel je gedachten hieronder!