Command Line Tool (CLI) for generate files.
This command is built following dotnet core global tools.
dotnet tool install -g vz-generator
vz init
sample names:
vz init --list-samples
only load specific sample:
vz init --with-sample abp --with-sample vue.pinia
After init, please see options in .vz/generate.settings.json
The basic liquid syntax and builtin functions follow Scriban.
Notice
As name of paths or files not allowed the char '|', so by convention, we use '___' instead of '|'.
{{'nameIt'|pascal_case}} => NameIt
{{'NameIt'|camel_case}} => nameIt
{{'NameIt'|kebab_case}} => name-it
{{'NameIt'|snake_case}} => name_it
{{'person'|pluralize}} => people
{{'people'|singularize}} => person
vz g
By default, g(generate) subcommand will ask what option you want to run.
You also can use -p <your option in .vz/generate.settings.json>
to provide answer
vz g -p 'Create Abp'
It will continue to ask you for some other setting which not store in .vz/generate.settings.json
, such as the value of the variables. Also, can be provided as below:
vz g -p 'Create Abp' --var project=MyCompany.MyProject --var entity=User
vz init
will create .vscode/settings.json
to associate .vz/generate.settings.schema.json
with .vz/generate.settings.json
. if .vscode/settings.json
is already exists, it will not override it, and you should update the file yourself with the content it will show you.
Be FREE to modify the file .vz/generate.settings.json
, vz g
will search the templates as you specified, load variables as you declared, and output the generated files to where you specified.
Even vz g -c <file path to your own settings.json>
can override the default path to generate.settings.json
, but the content of it should match the schema as .vz/generate.settings.schema.json
stored.
Follow the Usage vz g -h
.
Be FREE to submit (PRs) your own templates as default samples (for any languages any scenarios) which may helpful to others.
Auto tag and generate changelog.md by commit-and-tag-version
conventional commits
./set-git-hook.sh
npm i -g commit-and-tag-version # https://github.com/absolute-version/commit-and-tag-version#bumpfiles-packagefiles-and-updaters
commit-and-tag-version # --frist-release
IDE: VS Code
DEBUG mode will use .vzx
instead of .vz
- For DEBUG SubCommand
init
:- should check
"args"
in.vscode/launch.json
- should check
dependsOn
ofbuild
task in.vscode/tasks.json
, before build should runclean .vzx
andzip samples
- should check
- For DEBUG SubCommand
g
:- should check
"args"
in.vscode/launch.json
, and strings in it will treated as tokens (whitespace will not parsed). - should commented out the line
dependsOn
ofbuild
task in.vscode/tasks.json
- should check
All things work well.
IDE: VS Code
DEBUG mode will use .vzx
instead of .vz
- For DEBUG SubCommand
init
:- should check
"args"
in.vscode/launch.json
- should check
dependsOn
ofbuild
task in.vscode/tasks.json
, before build should runclean .vzx
andzip samples
- the commands in task
clean .vzx
should be change to powershellRemove-Item
or sth works in the specific shell. - the commands in task
zip samples
should be change to powershellCompress-Archive
or sth works in the specific shell.
- should check
- For DEBUG SubCommand
g
:- should check
"args"
in.vscode/launch.json
, and strings in it will treated as tokens (whitespace will not parsed). - should commented out the line
dependsOn
ofbuild
task in.vscode/tasks.json
- should check
resgen
maybe problem on windows when develop with pure dotnet core with vs code, but visual studio should work (not confirm).
the -w
option of subommand g
, will watch the folder which template files belong to, and regenerate the output in time. It facilitates the development of templates.
vz g -w
It will not watch the setting file, or ask you for any options or inputs again (only watch templates).
In watch
mode, output always override exists files.
vz rn
subcommand can replace key/value in file content or file name or directory name.
vz rn ProjectName/ -r ProjectName=Demo -r CompanyName=Company # more options try: vz rn -h
-
UseCases like codeBelt/generate-template-files, but here we got Liquid syntax for template files and paths.
-
Liquid scriban
-
Naming jquense/StringUtils