Teru
Teru is an easy to use project generator
How to start a project?
npx teru my-app albizures/teru-node-starter# or using a full url npx teru my-app https://github.com/albizures/teru-node-starter
How to create a starter
Basically any git repository is a teru starter, however is possible to modify how a starter behaves using token
s (which is just a fancy name for variables) and ejs.
Let's assume a basic node project:
.
├── package.json
└── index.js
Using ejs, the package.json
file can be modified when the new project is being created:
Where name
, author
and email
are tokens and their values are going to be requested.
And the last step is to run:
npx teru starter analyze
This command is going to check the whole project and it's going to create a teru.starter.js
file with something similar to this:
moduleexports = tokens: author: {} name: {} email: {} files: 'package.json';
For now there is no need to change anything here. You can check more about this file here
And that's it! Now the starter is ready to be published in any git hosting service and use it 🔥
teru.starter.js
file
Using Token customization
The starter file describes the tokens that are being used in the starter and the files where they are being used, additional to this, teru allows to customize how they are going to be requested, for example:
moduleexports = tokens: author: message: "What's your name" name: defaultValue: email: message: "What's your email?" files: 'package.json';
Conditional files
Teru allows to have conditional files using the token values, for example:
moduleexports = tokens: author: {} name: {} email: {} prettier: message: 'Do you want to use Prettier?' // a default value is needed to let teru know the // starter is going to ask for a boolean value defaultValue: true files: 'package.json' onlyWhen: prettier: true filename: 'prettier.config.js' ;
Assuming the the starter already have the
prettier.config.js
file
Using this starter config the prettier.config.js
file is going to be added only when prettier
is true
.