https://github.com/novagaia/strapi-plugin-generic-publisher
A flexible and generic plugin for triggering publications on multiple instances and hosting
https://github.com/novagaia/strapi-plugin-generic-publisher
publisher strapi-plugin
Last synced: 7 months ago
JSON representation
A flexible and generic plugin for triggering publications on multiple instances and hosting
- Host: GitHub
- URL: https://github.com/novagaia/strapi-plugin-generic-publisher
- Owner: NovaGaia
- License: mit
- Created: 2023-01-06T13:18:00.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2023-07-07T12:51:42.000Z (over 2 years ago)
- Last Synced: 2025-01-17T22:43:23.360Z (9 months ago)
- Topics: publisher, strapi-plugin
- Language: JavaScript
- Homepage: https://market.strapi.io/plugins/nova-publisher
- Size: 689 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
![]()
Strapi plugin Nova Publisher
by NovaGaïa.
Plugin dedicated to call multiple webhooks for publishing actions.
> View on [Strapi Marketplace](https://market.strapi.io/plugins/nova-publisher)
This plugin does several things:
1. Flexible publishing, a URL, in POST or GET, with or without headers ;
2. Allows you to publish to multiple instances (Prod, Preview, etc.);
3. Adds a publishing component to override Strapi's state management, useful with CRON in particular (no obligation to use);
4. Activate a cron that will update the active instances that need to be rebuilt every day at 1am (no obligation to use).## 1. Installation
## a. How to Install
Copy the following code and run from your terminal
```
npm i nova-publisher
```or
```
yarn add nova-publisher
```### b. Configuration
#### I. plugins.js
The configuration is done in the environment variables and in the plugin configuration.
> Here there are two instances configured, but you can add more or put only one.
```js
// ./config/plugins.js
// if change, run `npm run build --clean`module.exports = ({ env }) => ({
// ...
'nova-publisher': {
enabled: true,
config: {
dateConfiguration: {
dateLocaleString: 'fr-FR', // sample
options: {
// sample
timeZone: 'Europe/Paris',
timeZoneName: 'short',
hour12: false,
},
},
addPublishComponent: false,
instances: [
{
name: env('INSTANCE_0_NAME'),
icon: '🚀', // sample
enabled: env('INSTANCE_0_ENABLED'),
cron: env('INSTANCE_0_USE_CRON'),
url: env('INSTANCE_0_URL'),
web_url: env('INSTANCE_0_WEB_URL'),
method: 'post',
headers: {
// sample
Authorization: `Beaver ${env('INSTANCE_0_BEAVER')}`,
},
},
{
name: env('INSTANCE_1_NAME'),
icon: '👁️', // sample
enabled: env('INSTANCE_1_ENABLED'),
cron: env('INSTANCE_1_USE_CRON'),
url: env('INSTANCE_1_URL'),
web_url: env('INSTANCE_1_WEB_URL'),
method: 'post',
headers: {
// sample
Authorization: `Beaver ${env('INSTANCE_1_BEAVER')}`,
},
},
],
},
},
// ...
});
```| Variable | Description | Type | Default value |
| ------------------------------------ | ----------------------------------------------------------------- | ------- | --------------------------------------------------------------------- |
| `dateConfiguration` | Configuration of the date format in the messages, see (1). | Object | (See below) |
| `dateConfiguration.dateLocaleString` | Date local to use, see (1) | String | `en-EN` |
| `dateConfiguration.options` | Date formatting options, see (1) | Object | `{ timeZone: 'Europe/London', timeZoneName: 'short', hour12: false }` |
| `addPublishComponent` | Adds the helper component to manage more finely the publications. | Boolean | `false` |
| `instances` | Configuration of the instances where to launch the publication. | Object | (See below) |
| `instances.name` \* | Name of the intance. | String | Mandatory |
| `instances.icon` \* | Emoji. | String | Mandatory |
| `instances.enabled` \* | Enables or disables the display of the instance. | Boolean | Mandatory |
| `instances.url` \* | Target publish url. | String | Mandatory |
| `instances.web_url` | URL of your instance to open it from Nova-Publisher page. | String | - |
| `instances.method` | `POST` ou `GET`. | String | `POST` |
| `instances.headers` | Headers to send, see (2). | Object | - |\* **Mandatory field**
> (1) Pour `dateConfiguration`, see [Date.prototype.toLocaleString()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toLocaleString)
>
> (2) pour `instances.headers`, see [HTTP headers](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers)#### II. server.js
Enabled internal Strapi CRON
```js
// ./config/server.js
module.exports = ({ env }) => ({
// ...
cron: {
enabled: true,
},
// ...
});
```## 2. Utilisation

> **Warning**
> Before any use, the `Publication Status' displays a generic message.> **Note**
> The `Publication Status' message is not stored in the database (in case it is copied to other instances), but in a file under `./public/status-${instances[id].name}.txt`.If several instances are configured, the block is repeated.
Auto-publish enabled`indicates whether CRON is enabled for this instance, see`instances.enabled`.
### Publish
Click on `Publish` to initiate the action.
- The button is disabled while waiting (if you refresh the page, the button will be enabled again).
- The `Publish Status` displays Build started at ``.
- When the action returns, the button is reactivated.### Return management
When the action returns, the `Publish Status` will be updated with a success or error message and the time.
- Release in progress: Build started at ``.
- Success: Last build with success at ``.
- Error: Last build in error at ``.In case of an error, a `Toast` is displayed with the error message returned by the remote server, which you can find in the Strapi server logs.
---