Transfigure
Transfigure is a plug-in based transformer/transpiler for higher order languages that need to be converted to js|css|html. It provides the compile functionality for the Buddy build tool.
Plug-in transpilers
In order to add transpilation support to Buddy projects, separate transfigure- modules need to be installed alongside Buddy:
$ npm install transfigure-coffeescript transfigure-less
The following plug-ins are currently available (with version numbers tracking their underlying language versions):
js
- transfigure-babel
- transfigure-coffeescript
- transfigure-react [deprecated - JSX now compiled with transfigure-babel]
css
html
Writing your own plug-in
Writing a plug-in for Transfigure is relatively simple. Each plun-in should conform to the following requirements:
- Must have a package name starting with transfigure-
- Must implement the correct
registration
andcompile
behaviour - Must be installed in the current project's node_modules directory (or a reachable parent)
API
Modules must export a registration
object with name
and extensions
properties (Note that a plug-in can register multiple extensions):
exportsregistration = name: 'myPlugin' extensions: js: 'foo' 'bar' ;
Modules must export an async compile
function with the following signature and behaviour:
exports { try content = myPlugin; ; catch err // Attach current filepath for helpful console output errfilepath = optionsfilepath; ; };
The passed options
object has the following properties:
filepath
: the fully resolved file path (ex:/users/alex/projects/foo/src/js/foo.js
)extension
: the file extension (ex:js
)name
: the file name without extension (ex:foo
)type
: the build target type (js
,css
, orhtml
)includes
: an array of html include/partials objects that can be precompiled/loaded before compilationid
: a unique dependency idcontent
: the file content
cache
: an html template cache instance that may be used to store precompiled html templates (see transfigure-dust and transfigure-nunjucks for usage)