It's better when it's simple

User Tools

Site Tools


dev Plugin

Compatible with DokuWiki

  • 2024-02-06 "Kaos" unknown
  • 2023-04-04 "Jack Jackrum" yes
  • 2022-07-31 "Igor" unknown
  • 2020-07-29 "Hogfather" unknown

plugin The DokuWiki Developer's Tool

Last updated on

This command line plugin helps plugin and template developers dealing with the boilerplate required. It can be used to create and extend existing extensions. All used plugin skeletons are the same as used by the DokuWiki plugin wizard.

The plugin also provides utility mechanisms often needed when developing or refactoring a plugin.


Download and install the plugin using the Extension Manager. Refer to Plugins on how to install plugins manually.


The plugin is called via bin/plugin.php. It has to be called from within the extension's top level directory. Eg. if you want to use it to manage the foo plugin, it has to be called from within lib/plugins/foo. If you want to manage a template named foo, you need to be in lib/tpl/foo.

php ../../../bin/plugin.php dev

The plugin comes with a whole bunch of commands.


Use this to initialize a completely new extension. It will interactively ask for the required info and will create the or as well as a README and LICENSE file.

The plugin will initialize a new git repository.

php ../../../bin/plugin.php dev init

You can run this command in the directory of an existing extension. The plugin will ignore all existing basic files and add any missing ones.


Use this command to add a Unit Test. You can give a class name as parameter, or leave it off to simply add the standard GeneralTest and Github workflow.

php ../../../bin/plugin.php dev addTest
php ../../../bin/plugin.php dev addTest Something


This created the configuration files (eg. the conf/ folder) to make your extension configurable via the Configuration Manager.


This adds the English default files for localizing your extension (eg. the lang/en folder).

php ../../../bin/plugin.php dev addLang


Using this command, you can add a new component to your extension. It requires a parameter to specify the type of component you want (auth, admin, syntax, action, renderer, helper, remote or cli). A optional second parameter allows you to specify a component name.

# create a syntax.php:
php ../../../bin/plugin.php dev addComponent syntax
# create a helper/foobar.php
php ../../../bin/plugin.php dev addComponent helper foobar


This creates the deleted.files File for your extension based on previous commits.

php ../../../bin/plugin.php dev deletedFiles


This command will check your extension for files that are no longer needed and deletes them.

php ../../../bin/plugin.php dev rmObsolete


This command will download and clean up an SVG file from several known repositories. The file is cleaned up as recommended for embedding.

php ../../../bin/plugin.php dev downloadSvg mdi:account icons/user.svg

If the downloaded file will not be embedded directly into HTML, the SVG namespace needs to be kept. You can achieve this with the keep-ns option:

php ../../../bin/plugin.php dev downloadSvg --keep-ns mdi:account icons/user.svg

The following repositories are supported:

Prefix Repository
mdi Material Design Icons (default when no prefix is given)
fab Font Awesome Brands
fas Font Awesome Solid
fa Font Awesome Regular
twbs Twitter Bootstrap Icons


This command cleans up one or more given SVG files according to the settings recommended for embedding.

php ../../../bin/plugin.php dev cleanSvg icons/user.svg

If the file will not be embedded directly into HTML, the SVG namespace needs to be kept. You can achieve this with the keep-ns option:

php ../../../bin/plugin.php dev cleanSvg --keep-ns icons/user.svg

Note: this does not replace a proper SVG minimizer. It will probably only work for icons previously sourced from repositories mentioned above.


This command tries to figure out what language strings are actually used by your plugin and removes all unused strings from all your language files.

Language code detection might fail when the keys are dynamically built within your code, or calls span multiple lines. Use with caution and execute on a clean, committed repository only. Manually check for correctness afterwards!

php ../../../bin/plugin.php dev cleanLang


This will run all unit tests defined for the extension.

php ../../../bin/plugin.php dev test


This will run PHP CodeSniffer to verify the extensions code adheres to our Coding Style Standards.

php ../../../bin/plugin.php dev check

You can optionally pass files to check, if you don't want to check all files.

php ../../../bin/plugin.php dev check syntax.php admin.php


This command runs Rector and the PHP CodeSniffer Beautifier to automatically refactor deprecated code and fix coding style violations. It's highly recommended to make sure your current code is checked into git before running this.

php ../../../bin/plugin.php dev fix

You can optionally pass files to fix, if you don't want to fix all files.

php ../../../bin/plugin.php dev fix syntax.php admin.php
plugin/dev.txt · Last modified: 2024-03-18 23:50 by andi

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki