2017-12-16 07:29:19 -05:00
---
id: notifications
2018-03-05 01:13:01 -05:00
title: "Notificaciones"
2017-12-16 07:29:19 -05:00
---
2018-06-20 00:46:52 -05:00
Notify fué creado principalmente para usarse con los webhooks entrantes de Slack, pero también entregará una carga útil simple a cualquier endpoint. Actualmente sólo está activo para el comando `npm publish` .
2017-12-16 07:29:19 -05:00
2018-03-05 01:13:01 -05:00
## Uso
2017-12-16 07:29:19 -05:00
2018-06-20 00:46:52 -05:00
Un ejemplo con un hook de **HipChat** , **Stride** y **Google Hangouts Chat** :
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
> Verdaccio soporta cualquier API, siéntase en libertad de añadir más ejemplos.
2017-12-16 07:29:19 -05:00
2018-03-05 01:13:01 -05:00
#### Notificación sencilla
2017-12-16 07:29:19 -05:00
```yaml
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"}'
```
2018-03-05 01:13:01 -05:00
#### Múltiples notificaciones
2017-12-16 07:29:19 -05:00
```yaml
notify:
2018-05-24 06:08:15 -05:00
'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':
2017-12-16 07:29:19 -05:00
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"}'
2018-06-14 02:02:21 -05:00
'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 }}"}]}]}}'
2017-12-16 07:29:19 -05:00
```
2018-06-20 00:46:52 -05:00
## Modelo
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
Usamos [Handlebars ](https://handlebarsjs.com/ ) como el motor del modelo principal.
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
### Ejemplos de Formato
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
# iterar todas las versiones
2018-06-14 02:02:21 -05:00
{{ name }}{{#each versions}} v{{version}}{{/each}}`"}
2018-06-20 00:46:52 -05:00
# publisher y el paquete `dist-tag` publicado
2018-06-14 02:02:21 -05:00
{{ publisher.name }} has published {{publishedPackage}}"}
2018-06-20 00:46:52 -05:00
### Propiedades
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
Lista de las propiedades accesibles mediante el modelo
2018-06-14 02:02:21 -05:00
* Metadata
2018-06-20 00:46:52 -05:00
* Publisher (quién está publicando)
* Paquete Publicado (package@1.0.0)
2018-06-14 02:02:21 -05:00
### Metadata
2018-06-20 00:46:52 -05:00
Empaqueta la metadata a la que el modelo tiene acceso
2018-06-14 02:02:21 -05:00
{
"_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": {}
}
### Publisher
2018-06-20 00:46:52 -05:00
Puede accesar a la información del paquete publisher en el `content` de una webhook usando el objeto `publisher` .
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
Vea debalo del tipo de objeto `publisher` :
2018-06-14 02:02:21 -05:00
{
name: string,
groups: string[],
real_groups: string[]
}
2018-06-20 00:46:52 -05:00
Un ejemplo:
2018-06-14 02:02:21 -05:00
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 }}* . Publisher name: * {{ publisher.name }} * .","notify":true,"message_format":"text"}'
2018-06-20 00:46:52 -05:00
**Nota:** no es posible obtener la informacion de publisher si el archivo `package.json` ya tiene la propiedad `publisher` .
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
### Paquete Publicado
2018-06-14 02:02:21 -05:00
2018-06-20 00:46:52 -05:00
Puede accesar al paquete que está siendo publicado con el comando `{{publishedPackage}}` como a continuación.
2018-06-14 02:02:21 -05:00
{{ publisher.name }} has published {{publishedPackage}}"}
2018-06-20 00:46:52 -05:00
## Configuración
2017-12-16 07:29:19 -05:00
2018-03-05 01:13:01 -05:00
| Propiedad | Tipo | Requerido | Soporte | Por Defecto | Descripción |
| ------------------- | ------------ | --------- | ------- | ----------- | -------------------------------------------------------------------------------------------- |
| method | string | No | all | | HTTP verb |
| packagePattern | string | No | all | | Solo ejecutar esta notificación si el nombre del paquete coincide con la expresión regular |
2018-06-20 00:46:52 -05:00
| packagePatternFlags | string | No | all | | Cualquier bandera para ser usada con la expresión regular |
2018-03-05 02:22:22 -05:00
| headers | array/object | Yes | all | | Si el endpoint requiere encabezados específicos, defínelos aquí como un arreglo (key:value). |
| endpoint | string | Yes | all | | define el URL para el endpoint |
2018-06-20 00:46:52 -05:00
| content | string | Yes | all | | cualquier expresión [Handlebar ](https://handlebarsjs.com/ ) |