@kazion/create-app
Version:
A cli tool to help you get started with graphql and rest api's with typescript
67 lines (65 loc) • 2.15 kB
JavaScript
module.exports = function (
/** @type {import('plop').NodePlopAPI} */
plop,
) {
// controller generator
plop.setGenerator('module', {
description: 'application module',
prompts: [
{
type: 'input',
name: 'moduleName',
message: 'module name please',
suffix: '(e.g. users or posts)',
validate: function (value) {
if (/.+/.test(value)) {
return true;
}
return 'module name is required';
}
},
],
actions: [
{
type: 'addMany',
base: 'src/modules',
templateFiles: 'plopfile-templates/{{moduleName}}*.hbs',
destination: '/{{moduleName}}',
force: true,
},
{
type: 'add',
path: 'src/modules/{{moduleName}}/{{moduleName}}.handlers.ts',
templateFile: 'plopfile-templates/handler.hbs',
force: true,
},
{
type: 'add',
path: 'src/modules/{{moduleName}}/{{moduleName}}.services.ts',
templateFile: 'plopfile-templates/service.hbs',
force: true,
},
{
type: 'add',
path: 'src/modules/{{moduleName}}/{{moduleName}}.schema.ts',
templateFile: 'plopfile-templates/schema.hbs',
force: true,
},
{
type: 'add',
path: 'src/modules/{{moduleName}}/{{moduleName}}.resolvers.ts',
templateFile: 'plopfile-templates/resolver.hbs',
force: true,
},
{
type: 'add',
path: 'src/modules/{{moduleName}}/{{moduleName}}.types.ts',
templateFile: 'plopfile-templates/types.hbs',
force: true,
},
],
});
plop.setHelper('pluralize', function (text) {
return text + 's';
});
};