Developing a Template
The simplest form of template supported by the Enact CLI is a flat static directory of files to be copied. Static templates should include a root-level package.json, which will get
npm install executed upon creation via
Dynamic Template Generators
An enhanced form of template generators are also supported. In this form, the static template files are within a ./template subdirectory and a root-level index.js is available. The index.js can export hooks which
enact create can tie into.
Available optional properties that can be exported:
overwrite[boolean] Whether or not to overwrite existing files when copying the files from ./template.
install[boolean] Whether or not to run
validate[function] Code run when validating the
enact createtarget directory/name. Should throw or return a rejected Promise when an invalid name is used.
prepare[function] Code run just before copying the static files within ./template to the target directory.
setup[function] Code run just after copying the static files, but before running
complete[function] Code run just after everything is finished. Useful to output instructions or a message to the user.
undefined, the function/promise properties will fallback to the default application template handler property values. If explicitly set as
false, those events will be disabled during
enact create. When defining a function property, it must be synchronous or otherwise return a Promise for asynchronous evaluation.
Note: template generators can even have their own root package.json with dependencies that will be installed locally when the template is installed.
A selection of dynamic templates made by the Enact team can be found at https://github.com/enactjs/templates covering a wide variety of use-cases, such as Cordova and Electron.
For static templates, git repositories are a simple and straightforward method of sharing. Dynamic template generators have the added advantage of distribution on npm if desired.
Created a template of your own? We’d love to hear about it!