mirror of
https://github.com/wassname/talk.git
synced 2026-08-03 13:20:59 +08:00
Optionally load plugins config from environment
This commit is contained in:
+11
-4
@@ -3,11 +3,18 @@
|
||||
Plugins for Talk can take various forms, currently we are only supporting server
|
||||
side plugins.
|
||||
|
||||
## Plugin Registration: `plugins.json`
|
||||
## Plugin Registration
|
||||
|
||||
All plugins must be registered in the root file `plugins.json`.
|
||||
The parsing order for the plugin regsitration is as follows:
|
||||
|
||||
The format for this file is thus:
|
||||
- `process.env.TALK_PLUGINS_JSON`
|
||||
- `plugins.json`
|
||||
- `plugins.default.json`
|
||||
|
||||
If you need to "disable all plugins", you can simply provide `{}` as the
|
||||
contents of `process.env.TALK_PLUGINS_JSON` or the `plugins.json`.
|
||||
|
||||
The format for this is thus:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -18,7 +25,7 @@ The format for this file is thus:
|
||||
```
|
||||
|
||||
Where we have a `server` key with an array of plugins that match the folder
|
||||
name in the `plugins/` folder. For example, the above `plugins.json` would
|
||||
name in the `plugins/` folder. For example, the above config would
|
||||
require a plugin from `plugins/people`, which must provide a `index.js` file
|
||||
that returns an object that matches the Plugin Specification.
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ available in the format: `<scheme>://<host>` without the path.
|
||||
- `TALK_INSTALL_LOCK` (_optional for dynamic setup_) - Defaults to `FALSE`. When `TRUE`, disables the dynamic setup endpoint.
|
||||
- `TALK_RECAPTCHA_SECRET` (*required for reCAPTCHA support*) - server secret used for enabling reCAPTCHA powered logins. If not provided it will instead default to providing only a time based lockout.
|
||||
- `TALK_RECAPTCHA_PUBLIC` (*required for reCAPTCHA support*) - client secret used for enabling reCAPTCHA powered logins. If not provided it will instead default to providing only a time based lockout.
|
||||
- `TALK_PLUGINS_JSON` (_optional_) - used to specify the plugin config via the environment
|
||||
|
||||
Refer to the wiki page on [Configuration Loading](https://github.com/coralproject/talk/wiki/Configuration-Loading) for
|
||||
alternative methods of loading configuration during development.
|
||||
|
||||
+5
-1
@@ -14,8 +14,12 @@ let plugins = {};
|
||||
try {
|
||||
let defaultPlugins = path.join(__dirname, 'plugins.default.json');
|
||||
let customPlugins = path.join(__dirname, 'plugins.json');
|
||||
let envPluginJSON = process.env.TALK_PLUGINS_JSON;
|
||||
|
||||
if (fs.existsSync(customPlugins)) {
|
||||
if (envPluginJSON && envPluginJSON.length > 0) {
|
||||
debug('Now using TALK_PLUGINS_JSON environment variable for plugins');
|
||||
plugins = JSON.parse(envPluginJSON);
|
||||
} else if (fs.existsSync(customPlugins)) {
|
||||
debug(`Now using ${customPlugins} for plugins`);
|
||||
plugins = JSON.parse(fs.readFileSync(customPlugins, 'utf8'));
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user