Generate a cluster
Incremental generation
The neos generate command generates a cluster incrementally. In fact, it only generates the UI part whose yaml metadata files are newer than the generated files. This allows only the necessary files to be generated and avoids transpiling all C# code to typescript.
The more C# code a cluster contains in the frontend, the greater the generation time savings.
Note
The incremental generation is used only to generate the frontend. The backend is always generated in full, but only necessary .net projects are built.
Force full generation
To force the full generation of the cluster, you can use the --force or -f option. This will generate all the files, even if the yaml metadata files are older than the generated files.
neos generate --force
Note
When you use the --rebuild option, the cluster is generated in full.
Generate with Neos Studio
When you save a modification to a metadata, a partial generation is triggered. All TypeScript, Vuejs, C#, Resx, etc. files are generated but the .net projects are not built. So you can see the changes in the UI without having to do a generation, but you can't test the changes in the backend.
Note
You can suspend the partial generation by clicking on the pause button in the status bar of Neos Studio.
When a full generation is required, the “Generate” button in the left sidebar of Neos Studio turns Orange. Click on it to generate the cluster if you want to test the changes in the backend.
The Generate button triggers an incremental generation, normally this is sufficient in all cases. But if you want to force the full generation, you can use the “Generate (force)” button located under the first “Generate” button in the left sidebar of Neos Studio.
Incremental generation after upgrading Neos
After upgrading Neos, the incremental generation detects that the version of Neos has changed and triggers a full generation.
Interpreting .NET compilation errors
neos generate also builds several .NET scaffolding projects internally. When one of them fails to compile, each individual error or warning is reported on its own, with a message code (M0092/M0093) and, when available, a file/line/column — see Generation message level configuration for details, including how to fall back to the raw dotnet build output ([log:verbose]) when a coded diagnostic alone isn't enough.
If the build process fails but none of its output could be recognized as an individual diagnostic (for example an unexpected tool crash), the full raw output is still logged as an error, exactly as before — nothing is silently swallowed in that case.