- Getting started
- Tutorial - Model driven basics
- Tutorial - Full stack Angular application
- Fundamentals
- How-to
- Modeler
- Reference
codegenconfig.json
Overview
The presence of a codegenconfig.json
file in a directory indicates that the directory is the root of a code generation project. The codegenconfig.json
indicates which templates to run when the yellicode
command is invoked in that directory.
For each template, a model can be configured as input.
Example
{ "templates": [ { "templateFile": "./entities.template.ts", "modelFile": "my-code-model", "debug": true, }, { "templateFile": "./viewmodels.template.ts", "modelFile": "my-code-model" }, { "templateFile": "./bootstrap.template.ts", "modelFile": "my-code-model", "outputMode": "once" } ], "compileTypeScript": true }
Per-template configuration
templateFile
The templateFile
property is required and contains the path to the TypeScript or javascript file that contains the template.
modelFile
The modelFile
property is optional and contains the path to the Yellicode model (.ymn file) to use for the template. The file extension can be omitted. The template receives an instance of the model as follows:
import * as elements from '@yellicode/elements'; import { TextWriter } from '@yellicode/core'; import { Generator } from '@yellicode/templating'; Generator.generateFromModel({ outputFile: './Entities.cs' }, (textWriter: TextWriter, model: elements.Model) => { // Code generation code goes here, using the model API });
You can create a template that does not use a Yellicode model as follows:
import { TextWriter } from '@yellicode/core'; import { Generator } from '@yellicode/templating'; Generator.generate({outputFile: './simple-file.txt'}, (writer: TextWriter) => { // Code generation code goes here });
templateArgs
The templateArgs
field can contain custom JSON data that you want to pass to the template. In the template, you can access this data using the Generator.templateArgs
field. See Passing Arguments to a Template for more information.
debug
A special flag used for template debugging. The first template with debug
set to true will be the debug target. For details, see Template debugging.
outputMode
Indicates when and how output files should be updated. One of the following values is allowed:
overwrite
- The output file will be truncated if it exists. This is the default ifoutputMode
is omitted.once
- The output file will not be truncated if it already exists. Use this option if you want to update the file manually once it is generated.append
- The template output will be appended to the file if it already exists. The file is created if it does not exist.
If you need finer grained control, you can override the output mode in your code generation template. Please refer to CodeGenerationOptions in the templating API for more information.
disable
Set disable
to true if you want to (temporarilly) skip running a specific template.
Note: all paths must be relative to the codegenconfig.json
file.
Global configuration
compileTypeScript
When compileTypeScript
is true, Yellicode will compile all configured templates that have a .ts extension. Set this value to false if you need more control over TypeScript compilation. For details, see Controlling TypeScript compilation.
typeScriptConfigFile
The typeScriptConfigFile
property allows you to use a custom tsconfig.json
file. For details, see Controlling TypeScript compilation.