Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
egg-ts-helper
Advanced tools
A simple tool for generates typescript definition files(d.ts) for egg application. Injecting controller
,proxy
,service
and extend
to egg by Declaration Merging
npm i egg-ts-helper -g
or
yarn global add egg-ts-helper
Open your egg application, executing the command
$ ets
-w
flag can auto recreated d.ts while file changed
$ ets -w
$ ets -h
Usage: ets [commands] [options]
Options:
-v, --version output the version number
-w, --watch Watching files, d.ts would recreated while file changed
-c, --cwd [path] Egg application base dir (default: process.cwd)
-C, --config [path] Configuration file, The argument can be a file path to a valid JSON/JS configuration file.(default: {cwd}/tshelper.js
-f, --framework [name] Egg framework(default: egg)
-s, --silent Running without output
-i, --ignore [dirs] Ignore watchDirs, your can ignore multiple dirs with comma like: -i controller,service
-e, --enabled [dirs] Enable watchDirs, your can enable multiple dirs with comma like: -e proxy,other
-E, --extra [json] Extra config, the value should be json string
-h, --help output usage information
Commands:
clean Clean js file while it has the same name ts file
name | type | default | description |
---|---|---|---|
cwd | string | process.cwd | egg application base dir |
framework | string | egg | egg framework |
typings | string | {cwd}/typings | typings dir |
caseStyle | string | lower | egg case style(lower,upper,camel) |
watch | boolean | false | watch file change or not |
watchOptions | object | undefined | chokidar options |
execAtInit | boolean | false | execute d.ts generation while instance was created |
configFile | string | {cwd}/tshelper.js | configure file path |
watchDirs | object | generator configuration |
egg-ts-helper would watching app/extend
,app/controller
,app/service
, app/config
, app/middleware
, app/model
by default. The dts would recreated when the files under these folders was changed.
you can disabled some folders by -i
flag.
$ ets -i extend,controller
or configure in the config file
// {cwd}/tshelper.js
module.exports = {
watchDirs: {
extend: false,
controller: false,
}
}
or configure in package.json
// {cwd}/package.json
{
"egg": {
"framework": "egg",
"tsHelper": {
"watchDirs": {
"extend": false
}
}
}
}
You can require register to start egg-ts-helper before starting egg application with egg-bin.
$ egg-bin dev -r egg-ts-helper/register
debugging
$ egg-bin debug -r egg-ts-helper/register
see https://github.com/whxaxes/egg-boilerplate-d-ts
It works in these directories : app/controller
, app/service
, app/proxy
, app/extend
, app/config
, app/model
, app/middleware
.
(service, proxy are the same)
ts
// app/controller/home.ts
import { Controller } from 'egg';
export default class HomeController extends Controller {
public async index() {
this.ctx.body = 'ok';
}
}
typings
// app/typings/app/controller/index.d.ts
import Home from '../../../app/controller/home';
declare module 'egg' {
interface IController {
home: Home;
}
}
ts
// app/extend/context.ts
export default {
doSomething() {
console.info('do something');
}
};
typings
// app/typings/app/controller/index.d.ts
import ExtendObject from '../../../app/extend/context';
declare module 'egg' {
interface Context {
doSomething: typeof ExtendObject.doSomething;
}
}
ts
// config/config.default.ts
export default function() {
return {
keys: '123456'
}
}
typings
// app/typings/config/index.d.ts
import { EggAppConfig } from 'egg';
import ExportConfigDefault from '../../config/config.default';
type ConfigDefault = ReturnType<typeof ExportConfigDefault>;
type NewEggAppConfig = EggAppConfig & ConfigDefault;
declare module 'egg' {
interface Application {
config: NewEggAppConfig;
}
interface Controller {
config: NewEggAppConfig;
}
interface Service {
config: NewEggAppConfig;
}
}
ts
// app/middlware/uuid.ts
export default function() {
return async (context, next) => {
await next();
};
}
typings
// typings/middleware/index.d.ts
import Uuid from '../../../app/middleware/uuid';
declare module 'larva' {
interface IMiddleware {
uuid: typeof Uuid;
}
}
ts
// config/plugin.ts
export default {
cors: {
enable: true,
package: 'egg-cors',
},
static: {
enable: true,
package: 'egg-static',
}
}
typings
// typings/config/plugin.d.ts
// it's only import the package was exist under the node_modules
import 'egg-cors';
import 'egg-static';
Only support egg-sequelize now.
ts
// app/model/User.ts
import { Application } from 'egg';
export default (app: Application) => {
const { STRING } = app.Sequelize;
const User = app.model.define('user', {
name: STRING(30),
});
return User;
};
typings
// typings/app/model/index.d.ts
import User from '../../../app/model/User';
declare module 'sequelize' {
interface Sequelize {
User: ReturnType<typeof User>;
}
}
FAQs
egg typescript helper
The npm package egg-ts-helper receives a total of 15,911 weekly downloads. As such, egg-ts-helper popularity was classified as popular.
We found that egg-ts-helper demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.