This compiler will not work with older Riot.js versions. It's designed to work with Riot.js > 4.0.0. For Riot.js < 4.0.0 please check thev3branch
npm i @riotjs/compiler -D
The riot compiler can compile only strings:
import{compile}from'@riotjs/compiler'
const{code,map}=compile('<p>{hello}</p>')
You can compile your tags also using the newregisterPreprocessor
andregisterPostprocessor
APIs for example:
import{
compiler,
registerPreprocessor,
registerPostprocessor,
}from'@riotjs/compiler'
importpugfrom'pug'
import*asbabelfrom'@babel/core'
// process your tag template before it will be compiled
registerPreprocessor('template','pug',function(code,{options}){
const{file}=options
console.log('your file path is:',file)
return{
code:pug.render(code),
// no sourcemap here
map:null,
}
})
// your compiler output will pass from here
registerPostprocessor(function(code,{options}){
const{file}=options
console.log('your file path is:',file)
// notice that babel.transformSync returns {code, map}
returnbabel.transformSync(code)
})
const{code,map}=compile('<p>{hello}</p>',{
// specify the template preprocessor
template:'pug',
})
- string:is your tag source code
- options:the options should contain the
file
key identifying the source of the string to compile and thetemplate
preprocessor to use as string
Note: specific preprocessors like thecss
or thejavascript
ones can be enabled simply specifying thetype
attribute
in the tag source code for example
<my-tag>
<styletype= "scss">
//...
</style>
</my-tag>
- type:either one of
template
css
orjavascript
- id:unique preprocessor identifier
- preprocessorFn:function receiving the code as first argument and the current options as second
- postprocessorFn:function receiving the compiler output as first argument and the current options as second