Plugins
As of version 2.3.0, you can build your CLI with the ability to read for extra plugins that are
developed by other people. By using the usePlugins option with the CommandFactory, you’ll be
setting up you shiny new CLI to expect to find a config file with a plugins property that is an
array of strings, either as the locations of packages in a local environment, or npm package names.
The Config File
The config file, by default, can be one of the following:
.nest-commanderrc.nest-commanderrc.json.nest-commanderrc.yaml.nest-commanderrc.ymlnest-commander.jsonnest-commander.yamlnest-commander.yml
If you’d like to use a name other than nest-commander, you can pass the cliName option to the
CommandFactory as well.
Now the config file should be incredibly simple, just a JSON object with a plugins property that
is an array of strings, e.g.
{
"plugins": ["nest-commander-plugin", "./my/local/plugin"]
}
The Plugins
Each plugin registered needs to have a default export that is a Nest module that adds the new
command as a provider.
@Command({ name: 'plugin' })
export class PluginCommand extends CommandRunner {
async run() {
console.log('From the plugin!');
}
}
@Module({
providers: [PluginCommand]
})
export class PluginModule {}
import { PluginModule } from './plugin.module';
export default PluginModule;