Notifiche
Notify fu creato principalmente per essere utilizzato con i webhook entranti di Slack, ma consegnerà inoltre un semplice carico utile ad ogni endpoint. Al momento è solo attivo per il comando npm publish.
Utilizzo
Un esempio con un hook HipChat, Stride e Google Hangouts Chat:
Verdaccio supporta qualsiasi API, sentiti libero di aggiungere ulteriori esempi.
Notifica singola
notify:
  method: POST
  headers: [{ 'Content-Type': 'application/json' }]
  endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
  content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
Notifica multipla
notify:
  'example-google-chat':
    method: POST
    headers: [{ 'Content-Type': 'application/json' }]
    endpoint: https://chat.googleapis.com/v1/spaces/AAAAB_TcJYs/messages?key=myKey&token=myToken
    content: '{"text":"New package published: `{{ name }}{{#each versions}} v{{version}}{{/each}}`"}'
  'example-hipchat':
    method: POST
    headers: [{ 'Content-Type': 'application/json' }]
    endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
    content: '{"color":"green","message":"New package published: * {{ name }}*","notify":true,"message_format":"text"}'
  'example-stride':
    method: POST
    headers: [{ 'Content-Type': 'application/json' }, { 'authorization': 'Bearer secretToken' }]
    endpoint: https://api.atlassian.com/site/{cloudId}/conversation/{conversationId}/message
    content: '{"body": {"version": 1,"type": "doc","content": [{"type": "paragraph","content": [{"type": "text","text": "New package published: * {{ name }}* Publisher name: * {{ publisher.name }}"}]}]}}'
Modello
Usiamo Handlebars come template engine principale.
Esempi di formato
# itera tutte le versioni
{{ name }}{{#each versions}} v{{version}}{{/each}}
# pubblicatore e pacchetto `dist-tag` pubblicati
{{ publisher.name }} ha pubblicato {{ publishedPackage }}
Proprietà
List of properties accesible via template:
- Meta-dati
- Pubblicatore (chi sta pubblicando)
- Pacchetto Pubblicato (package@1.0.0)
Meta-dati
Pacchetto di meta-dati cui il modello ha accesso
{
    "_id": "@test/pkg1",
    "name": "@test/pkg1",
    "description": "",
    "dist-tags": {
        "beta": "1.0.54"
    },
    "versions": {
        "1.0.54": {
            "name": "@test/pkg1",
            "version": "1.0.54",
            "description": "some description",
            "main": "index.js",
            "scripts": {
                "test": "echo \"Error: no test specified\" && exit 1"
            },
            "keywords": [],
            "author": {
                "name": "Author Name",
                "email": "author@domain.com"
            },
            "license": "MIT",
            "dependencies": {
                "webpack": "4.12.0"
            },
            "readmeFilename": "README.md",
            "_id": "@ test/pkg1@1.0.54",
            "_npmVersion": "6.1.0",
            "_nodeVersion": "9.9.0",
            "_npmUser": {},
            "dist": {
                "integrity": "sha512-JlXWpLtMUBAqvVZBvH7UVLhXkGE1ctmXbDjbH/l0zMuG7wVzQ7GshTYvD/b5C+G2vOL2oiIS1RtayA/kKkTwKw==",
                "shasum": "29c55c52c1e76e966e706165e5b9f22e32aa9f22",
                "tarball": "http://localhost:4873/@test/pkg1/-/@test/pkg1-1.0.54.tgz"
            }
        }
    },
    "readme": "# test",
    "_attachments": {
        "@test/pkg1-1.0.54.tgz": {
            "content_type": "application/octet-stream",
            "data": "H4sIAAAAAAAAE+y9Z5PjyJIgOJ ...",
            "length": 33112
        }
    },
    "time": {}
}
Pubblicatore
Puoi ottenere accesso alle informazioni del pubblicatore del pacchetto nel contenuto di un webhook usando l'oggetto publisher.
Vedi sotto il tipo d'oggetto publisher:
{
  name: string,
  groups: string[],
  real_groups: string[]
}
Un esempio:
notify:
  method: POST
  headers: [{'Content-Type': 'application/json'}]
  endpoint: https://usagge.hipchat.com/v2/room/3729485/notification?auth_token=mySecretToken
  content: '{"color":"green","message":"New package published: * {{ name }}*. Nome del pubblicatore: * {{ publisher.name }} *.","notify":true,"message_format":"text"}'
Nota: è impossibile ottenere le informazioni del pubblicatore se il file package.json ha già la proprietà publisher.
Pacchetto Pubblicato
Puoi accedere al pacchetto in pubblicazione con la parola chiave {{publishedPackage}} come segue.
{{ publisher.name }} ha pubblicato {{ publishedPackage }}
Configurazione
| Proprietà | Tipo | Richiesto | Supporto | Default | Descrizione | 
|---|---|---|---|---|---|
| metodo | stringa | No | tutti | Verbo HTTP | |
| packagePattern | stringa | No | tutti | Esegui questa notifica solo se il nome del pacchetto corrisponde all'espressione regolare | |
| packagePatternFlags | stringa | No | tutti | Ogni flag da usare con l'espressione regolare | |
| intestazioni | insieme/oggetto | Sì | tutti | Se questo endpoint richiede intestazioni specifiche, impostale qui come un'insieme di chiavi: oggetti del valore. | |
| endpoint | stringa | Sì | tutti | imposta l'endpoint dell'URL per questa chiamata | |
| contenuto | stringa | Sì | tutti | ogni espressione della Barra di Gestione |