Rocket.Chat Apps CLI
The Rocket.Chat Apps CLI for interacting with Apps.
Getting Started
Extremely simple.
npm install -g @rocket.chat/apps-cli
Rocket.Chat App Development
Logging Inside an App
Due to limitations of NodeJS's vm
package we have had to implement a custom logger class.
To make usage of this you can use this.getLogger()
and then do the normal console
style logging.
rc-apps create
The development tools provide a command to quickly scaffold a new Rocket.Chat App, simply run rc-apps create
and a new folder will be created inside the current working directory with a basic App which does nothing but will compile and be packaged in the dist
folder.
App description
The app description file, named app.json
, contains basic information about the app. You can check the app-schema.json file for all the detailed information and fields allowed in the app description file, the basic structure is similar to this:
{
"id": "5cb9a329-0613-4d39-b20f-cc2cc9175df5",
"name": "App Name",
"nameSlug": "app-name",
"version": "0.0.1",
"requiredApiVersion": "^0.9.13",
"description": "App which provides something very useful for Rocket.Chat users.",
"author": {
"name": "Author Name <author@email.com>",
"support": "Support Url or Email"
},
"classFile": "main.ts",
"iconFile": "beautiful-app-icon.jpg"
}
Extending the App class
The basic creation of an App is based on extending the App
class from the Rocket.Chat Apps ts-definition library. Your class also has to implement the constructor and optionally the initialize
function, for more details on those check the App definition documentation.
import {
IConfigurationExtend,
IConfigurationModify,
IEnvironmentRead,
ILogger,
} from '@rocket.chat/apps-ts-definition/accessors';
import { App } from '@rocket.chat/apps-ts-definition/App';
import { IAppInfo } from '@rocket.chat/apps-ts-definition/metadata';
export class TodoListApp extends App {
constructor(info: IAppInfo, logger: ILogger) {
super(info, logger);
}
public async initialize(configurationExtend: IConfigurationExtend, environmentRead: IEnvironmentRead): Promise<void> {
await this.extendConfiguration(configurationExtend, environmentRead);
this.getLogger().log('Hello world from my app');
}
}
Packaging the app
Currently the Rocket.Chat servers and Marketplace allow submission of zip files, these files can be created by running rc-apps package
which packages your app and creates the zip file under dist
folder.