egg-template-helper
Setup an egg project
install egg-init
globally
npm i egg-init -g
setup a TypeScript based project
npx egg-init --type=ts projectName
cd projectName && npm i
npm run dev
setup a JavaScript based project
egg-init --type simple projectName
cd projectName && npm i
npm run dev
For further details, please refer to https://github.com/eggjs/egg-init
Install
npm install egg-template-helper -g
or
yarn global add egg-template-helper
Usage
$ eth -h
Usage: eth [commands] [options]
Options:
-v, --version output the version number
-h, --help output usage information
Commands:
new [name] [options] ๆฐๅปบeggๆไปถ
delete [name] [options] ๅ ้คeggๆไปถ
rename [name] [options] ้ๅฝๅeggๆไปถ
eth new
create files by the [name] and a specified type.
New Options
name | type | description |
---|
category | string | new file category |
test | boolean | whether append test for controller / service / model |
Available category
default
: will create controller, service and model.controller
: will create a controller.service
: will create a service.model
: will create a model, the model depends on mongoose
.
create controller / service / model
eth new user --category default
or
eth new user -c default
Actually the [name] parameter is a path relative to app/controller
/ app/service
/ app/model
In this example, it will create app/controller/user.ts
, app/model/user.ts
, app/service/user.ts
.
create a sub directory controller / service / model
eth new permission/role --category default
or
eth new permission/role -c default
It will create app/controller/permission/role.ts
, app/model/permission/role.ts
, app/service/permission/role.ts
.
eth delete
delete files associated with the [name]
eth delete user
It will delete app/controller/user.ts
, app/model/user.ts
, app/service/user.ts
.
eth rename
Rename Options
name | type | description |
---|
newPath | string | new path |
rename files associated with the [name]
eth rename user -n masterUser
or
eth rename user -newPath masterUser
It will rename app/controller/user.ts
, app/model/user.ts
, app/service/user.ts
to app/controller/masterUser.ts
, app/model/masterUser.ts
, app/service/masterUser.ts
It will also change the file content!!!
Once user
renamed to masterUser
, the app/controller/masterUser.ts
content is changed.
import { Controller } from 'egg'
export default class MasterUserController extends Controller {
}
Customizations
You can setup your own templates.
eth.config.json
create an eth.config.json
file under the project root.
name | type | default | description |
---|
ext | string | ".ts" | file extenision, you can specify ext to ".js" if you use JavaScript to develop egg project |
templateDir | string | "" | custom template path, relative to the project root |
execEts | boolean | true | execute egg-ts-helper after command executed. It will take effect when ext is ".ts" |
renameContent | boolean | true | rewrite file content when executing rename command |
customData | object | {} | pass custom data to custom template when executing new command |
Example
Let's customize a template and inject an author name by setting customData.
eth.config.json
{
"ext": ".ts",
"templateDir": "template",
"execEts": true,
"renameContent": false,
"customData": {
"Author": "Dada"
}
}
directory structure
egg-showcase
โโโ node_modules
โโโ app
โโโ controller
โโโ model
โโโ service
โโโ router.ts
โโโ template template directory
| โโโ controller.test.tpl controller test template
| โโโ controller.tpl controller template
| โโโ model.tpl model template
| โโโ service.test.tpl service testtemplate
โโโ โโโ service.tpl service template
template/comtroller.tpl
import { Controller } from 'egg'
export default class <%=pascalCaseName%>Controller extends Controller {
}
There are four built in variables: name
, pascalCaseName
, testName
, modelTestRootRelative
execute new
command
eth new user -c default
The content in app/controller/user.ts
will like this:
import { Controller } from 'egg'
export default class UserController extends Controller {
}