---
name: "Mojolicious::Plugins"
section: "3pm"
platform: "linux"
package: "libmojolicious-perl"
version: "9.39+dfsg-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Mojolicious::Plugins"
---

# Mojolicious::Plugins(3pm)

Plugin manager

## NAME

Mojolicious::Plugins - Plugin manager

## SYNOPSIS

```
  use Mojolicious::Plugins;
  my $plugins = Mojolicious::Plugins->new;
  push @{$plugins->namespaces}, 'MyApp::Plugin';
```

## DESCRIPTION

Mojolicious::Plugins is the plugin manager of Mojolicious.

## PLUGINS

The following plugins are included in the Mojolicious distribution as examples.

- Mojolicious::Plugin::Config

  Perl-ish configuration files.

- Mojolicious::Plugin::DefaultHelpers

  General purpose helper collection, loaded automatically.

- Mojolicious::Plugin::EPLRenderer

  Renderer for plain embedded Perl templates, loaded automatically.

- Mojolicious::Plugin::EPRenderer

  Renderer for more sophisticated embedded Perl templates, loaded automatically.

- Mojolicious::Plugin::HeaderCondition

  Route condition for all kinds of headers, loaded automatically.

- Mojolicious::Plugin::JSONConfig

  JSON configuration files.

- Mojolicious::Plugin::Mount

  Mount whole Mojolicious applications.

- Mojolicious::Plugin::NotYAMLConfig

  YAML configuration files.

- Mojolicious::Plugin::TagHelpers

  Template specific helper collection, loaded automatically.

## EVENTS

Mojolicious::Plugins inherits all events from Mojo::EventEmitter.

## ATTRIBUTES

Mojolicious::Plugins implements the following attributes.

### namespaces

```
  my $namespaces = $plugins->namespaces;
  $plugins       = $plugins->namespaces(['Mojolicious::Plugin']);
```

Namespaces to load plugins from, defaults to Mojolicious::Plugin.

```
  # Add another namespace to load plugins from
  push @{$plugins->namespaces}, 'MyApp::Plugin';
```

## METHODS

Mojolicious::Plugins inherits all methods from Mojo::EventEmitter and implements the following new ones.

### emit\_chain

```
  $plugins->emit_chain('foo');
  $plugins->emit_chain(foo => 123);
```

Emit events as chained hooks.

### emit\_hook

```
  $plugins = $plugins->emit_hook('foo');
  $plugins = $plugins->emit_hook(foo => 123);
```

Emit events as hooks.

### emit\_hook\_reverse

```
  $plugins = $plugins->emit_hook_reverse('foo');
  $plugins = $plugins->emit_hook_reverse(foo => 123);
```

Emit events as hooks in reverse order.

### load\_plugin

```
  my $plugin = $plugins->load_plugin('some_thing');
  my $plugin = $plugins->load_plugin('SomeThing');
  my $plugin = $plugins->load_plugin('MyApp::Plugin::SomeThing');
```

Load a plugin from the configured namespaces or by full module name.

### register\_plugin

```
  $plugins->register_plugin('some_thing', Mojolicious->new);
  $plugins->register_plugin('some_thing', Mojolicious->new, foo => 23);
  $plugins->register_plugin('some_thing', Mojolicious->new, {foo => 23});
  $plugins->register_plugin('SomeThing', Mojolicious->new);
  $plugins->register_plugin('SomeThing', Mojolicious->new, foo => 23);
  $plugins->register_plugin('SomeThing', Mojolicious->new, {foo => 23});
  $plugins->register_plugin('MyApp::Plugin::SomeThing', Mojolicious->new);
  $plugins->register_plugin(
    'MyApp::Plugin::SomeThing', Mojolicious->new, foo => 23);
  $plugins->register_plugin(
    'MyApp::Plugin::SomeThing', Mojolicious->new, {foo => 23});
```

Load a plugin from the configured namespaces or by full module name and run `"register"`, optional arguments are passed through.

## SEE ALSO

Mojolicious, Mojolicious::Guides, \<https://mojolicious.org\>.
