Select Page

GitHub project joomla-packager allow rapid application development of Joomla extensions

GitHub project joomla-packager allow rapid application development of Joomla extensions

joomlaloveRAD

Rapid application development (RAD) is a software development methodology that uses minimal planning in favor of rapid prototyping. Something that was really slowing me a lot and making any builds or changes in my extensions a real pain to maintain was the packaging of code spread in the joomla tree. I did create numerous custom Phing builds to automate and reduce these pains (Phing is heavily derived from Apache ANT) and  2 months ago  Joomla-packager was born!

My Joomla-packager is a generic Phing build script to build any #Joomla 3rd extension, being a set of components, modules, plugins and or libraries, packages in a simple way.

Audience

Developers of 3rd party extensions for Joomla

Convention over configuration…

  • A single script to rule all your need of Joomla packaging: multi modules/ multi plugins/multi components/multi library is supported,
  • If you respect Joomla conventions, this packager will be able to create a build of any of your extensions or set of extensions,
  • just configure one file (like for example in buildCedThumbnails.xml), mainly listing what your extension is made of and run with minimal efforts,
  • Packaging #Joomla extensions will always look look the same = repeatability = convention over configuration

Usage

  1. Download https://raw.github.com/cedricwalter/joomla-packager/master/joomla-packager.xml locally
  2. Download a copy of buildCedThumbnails.xml You only need to rename and touch this file, it is self documented.
  3. Download a copy of pkg_cedthumbnails.xml You only need to update this file if you alter the structure. (later Joomla-packager will create this file on the fly)
  4. Run the main target build of buildCedThumbnails.xml

How it is working?

This script implement ALL standard Joomla conventions to perform the packaging, and offer reusable Phing targets to package any number of extensions. Here is what is implemented:

Modules

  • 1. Code is located in /modules/mod_${xxxxx} and self contained
  • 2. Languages files are optional but if they exist are located at /language/xx-yy/mod_${xxxxx}.ini /language/xx-yy/mod_${xxxxx}.sys.ini
  • 3. Media files (css,js,images) are optional but if they exist are located at /media/mod_${xxxxx}
  • 4. name of zip files as follow:
    • mod_{yourextension1}.zip

Plugins

  • 1. Code is located in /plugins/${type}/${xxxxx} and self contained
  • 2. Languages files are optional but if they exist are located at /plugins/${type}/${xxxxx}/language/ or anywhere else in directory at step 1.
  • 3. Media files (css,js,images) are optional but if they exist are located at /media/plg_${type}_${xxxxx}
  • 4. name of zip files as follow:
    • plg_${type}_{yourextension}.zip

Components

  • 1. Code is located in /administrator/components/${xxxxx} and /components/${xxxxx} and is self contained
  • 2. Languages files are optional but if they exist are located at /administrator/language/xx-yy/${xxxxx}.ini and /language/xx-yy/${xxxxx}.ini and
  • 3. Media files (css,js,images) are optional but if they exist are located at /media/${xxxxx}

Packages

  • 1. one zip file which contains 1 to n other zip file + a manifest file named pkg_{yourextension}.xml
  • 2. manifest file named pkg_{yourextension}.xml has to be written manually for now and place beside your build{yourextension}.xml
  • 4. name of zip files as follow:
    • com_{yourextension}.zip

You can browse numerous examples (for Joomla 2.5/3.0/3.1 at the project page (GitHub)

About The Author

I worked with various Insurances companies across Switzerland on online applications handling billion premium volumes. I love to continuously spark my creativity in many different and challenging open-source projects fueled by my great passion for innovation and blockchain technology.In my technical role as a senior software engineer and Blockchain consultant, I help to define and implement innovative solutions in the scope of both blockchain and traditional products, solutions, and services. I can support the full spectrum of software development activities, starting from analyzing ideas and business cases and up to the production deployment of the solutions.I'm the Founder and CEO of Disruptr GmbH.

Categories