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
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!