Plugins
Plugins are explicitly managed in the Amplify CLI pluggable platform. Plugins enable you to add additional commands and functionality to existing Amplify CLI. This section goes through the steps to create, publish, consume a plugin package, explains the folder structure, and key files in the plugin package.
Official plugins
- amplify-category-analytics
- amplify-category-api
- amplify-category-auth
- amplify-category-function
- amplify-category-hosting
- amplify-category-interactions
- amplify-category-notifications
- amplify-category-predictions
- amplify-category-storage
- amplify-codegen
- amplify-frontend-javascript
- amplify-frontend-android
- amplify-frontend-ios
- amplify-provider-awscloudformation
Third-party plugins
- amplify-category-video - Make it easy to incorporate video streaming into your mobile and web applications powered by AWS Amplify and AWS Media Services
- amplify-category-docs - An easy way to view the Amplify Docs from the Amplify CLI
- amplify-category-data-importer - Automate the process of seeding, importing, and managing data for Amplify projects
- graphql-ttl-transformer - Enable DynamoDB's time-to-live feature to auto-delete old entries in your AWS Amplify API
- amplify-graphql-seed-plugin - Seed your local and remote databases with highly customizable mock data using your GraphQL API
Plugin installation
You can add a 3rd party plugin to the Amplify CLI with the following steps:
- If the plugin author named the plugin package according to the naming convention.
- Run
npm install -g <plugin>and install the plugin to the global node_modules directory. - Run
amplify plugin scanso the Amplify CLI plugin platform will pick up the newly added plugin.
- If the plugin author did NOT name the plugin package according to the naming convention outlined above.
- Run
npm install -g <plugin>and install the plugin to the global node_modules directory. - Run
amplify plugin addand provide the path to the plugin to explicitly add the plugin package into the Amplify CLI plugin platform.
Plugin Commands
The following is the suite of the commands under the amplify plugin:
- amplify plugin configure
- amplify plugin scan
- amplify plugin add
- amplify plugin remove
- amplify plugin list
- amplify plugin init
- amplify plugin verify
- amplify plugin help
configure
amplify plugin configure is used to configure the following settings in the plugins.json file:
plugin-directories: contains the directories that plugin packages are searched for during a plugin scan.plugin-prefixes: contains the plugin package name prefixes. A package named with such prefix is considered a plugin candidate and checked during a plugin scan. Ifplugin-prefixesis empty, all packages inside the scanned directories will be checked.max-scan-interval-in-seconds: the Amplify CLI Core will scan again if the last scan time has passed for longer thanmax-scan-interval-in-seconds. Setting this value to 0 will result in fresh scan at the beginning of each Amplify CLI command execution. The default value is 1 day.
scan
amplify plugin scan will start a fresh scan for plugins in the local environment. A configurable set of directories specified in plugin-directories, such as the global node_modules, are scanned for plugins.
Execution of this command will completely update the contents of the plugins field in the plugins.json.
The last-scan-time field in the plugins.json is the time stamp of the last plugin scan.
Note that, other than manually started by this command, a plugin scan can also be triggered by a regular amplify command execution, for example if the Amplify CLI Core noticed something is incorrect, or the last scan time has passed for longer than max-scan-interval-in-seconds(set to be one day by default).
add
amplify plugin add will prompt you to select a previously removed plugin (see below), or enter the full path of a local package to be added as a plugin into the Amplify CLI. The Amplify CLI Core verifies the existence and validity of the plugin package during execution of the this command. You can use this command to add a plugin that will not be found by the plugin scan process, e.g. if it is not in one of the plugin-directories, or its package name does not have the proper prefix as specified in the plugin-prefixes.
remove
amplify plugin remove will prompt you with the list of all the currently active plugins, and allow you to select the ones that you do not want to be included in the Amplify CLI. The Amplify CLI Core will remove the manifest of those plugins from the plugins field, so they will NOT be counted as active plugins anymore and will NOT be loaded during command executions.
If a removed plugin is in one of the directories specified in the plugin-directories, and its package name has the prefix as specified in the plugin-prefixes, it is then inserted in the excluded field of the plugins.json file. This will not be inserted back to the plugins field in the next plugin scan.
The actual plugin packages themselves are not removed from your computer, and they can be added back as active plugins by amplify plugin add.
list
amplify plugin list lists all the active plugins, along with other information of the local Amplify CLI plugin platform.
init
The Amplify CLI provides the command amplify plugin init (with alias amplify plugin new) for the development of plugins.
This command first collects the requirements from you and then creates the skeleton of the plugin package for you to start the development.
The newly created plugin package is added to your local Amplify CLI platform, so you can conveniently test its functionalities while it is being developed.
It can be easily removed from the platform with the amplify plugin remove command and added back with the amplify plugin add command.
verify
The Amplify CLI provides the utility command amplify plugin verify to verify that:
- The package implements the required interface methods for plugins.
- The
commandsfield contains all the required commands for the type of the plugin.amplify plugin verifycommand treats the folder where it is executed as the root directory of the plugin package. The command can be executed manually. Its functionality is also invoked by theamplify plugin scanandamplify plugin addcommands.
help
Prints out help information for the commands under amplify plugin.