Setup Dev Env - xfrocks/DevHelper GitHub Wiki

There are two ways to setup development environment that is compatible with DevHelper:

  1. Symlinks: easier to use but dev env must be *NIX
  2. Docker: flexible and works everywhere with docker installed

Assumptions

/path/to/DevHelper path to this repo.

/path/to/addons path to directory that contains all add-ons under development.

/path/to/xenforo path to XenForo source (containing admin.php, js, library).

addOnId is your add-on ID.

Each add-on must be in its own directory (named as the add-on ID) and have this structure:

/path/to/addons/addOnId # git repository root
    |
    |--js
    |   |
    |   └--addOnId
    |       └-- full 
    |           |-- # javascript files (will be minified)
    |           └-- ...
    |
    |--library
    |   └--addOnId 
    |       |-- # PHP scripts
    |       └-- ...
    |
    └--styles
        └--default
            └--addOnId
                |-- # all other assets
                └-- ...

Using symlinks

Setup XenForo

These steps are to be done after installing XenForo normally on your favourite web server.

Copy js/library files:

  • cp -R /path/to/DevHelper/js/DevHelper /path/to/xenforo/js/DevHelper
  • cp -R /path/to/DevHelper/library/DevHelper /path/to/xenforo/library/DevHelper

Open /path/to/xenforo/index.php and /path/to/xenforo/admin.php, look for these lines:

require($fileDir . '/library/XenForo/Autoloader.php');
XenForo_Autoloader::getInstance()->setupAutoloader($fileDir . '/library');

Replace them with:

require($fileDir . '/library/XenForo/Autoloader.php');
require($fileDir . '/library/DevHelper/Autoloader.php');
DevHelper_Autoloader::getDevHelperInstance()->setupAutoloader($fileDir . '/library');

Setup add-on

Change directory to /path/to/addons and execute xf-new-addon addOnId /path/to/xenforo. For new add-on, this command with create the directory structure as described above 👆. Then it will create symlinks for all inner addOnId directories:

  • /path/to/addons/addOnId/js/addOnId -> /path/to/xenforo/js/addOnId
  • /path/to/addons/addOnId/library/addOnId -> /path/to/xenforo/library/addOnId
  • /path/to/addons/addOnId/styles/default/addOnId -> /path/to/xenforo/style/defaults/addOnId

Now you can start working on your add-on, any changes you made to the add-on files should be trackable with git.

Using Docker

Setup XenForo

Change directory to /path/to/DevHelper and edit docker-compose.yml, look for these lines:

    #volumes:
      #- /path/to/xenforo:/var/www/html/xenforo:rw
      #- /path/to/addons:/var/www/html/addons:rw
      #- .:/var/www/html/:rw

Uncomment them all and update the paths to match your development environment, something like these:

    volumes:
      - ~/Downloads/xenforo_1.5.9/upload:/var/www/html/xenforo:rw
      - ~/Dropbox/XenForo/AddOns:/var/www/html/addons:rw
      - .:/var/www/html/:rw

Afterward, execute docker-compose up and go to http://xenforo.local.xfrocks.com/install to install XenForo. The default MySQL username, password and database are all xenforo.

Other usage:

Setup add-on

For new add-on, just create a new directory inside /path/to/addons and start working.