Skip to main content

Notificações

Notify foi criado principalmente para ser usado com webhooks entrantes para Slack, mas também fornecerá uma carga útil simples para qualquer endpoint. Atualmente, apenas ativo para comando npm publish.

Utilização#

Um exemplo com um hook de HipChat, Stride e Google Hangouts Chat:

Verdaccio suporta qualquer API, fique à vontade para adicionar mais exemplos.

Notificação única#

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ção múltipla#

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 }}"}]}]}}'

Modelo#

Nós usamos Handlebars como mecanismo de modelo principal.

Exemplos de Formato#

# iterate all versions{{ name }}{{#each versions}} v{{version}}{{/each}}
# publisher and `dist-tag` package published{{ publisher.name }} has published {{ publishedPackage }}

Propriedades#

Lista de propriedades acessáveis via modelo

  • Metadata
  • Publisher (quem está publicando)
  • Package Published (package@1.0.0)

Metadata#

Pacote de metadata que o modelo tem acesso

{    "_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": {}}

Editor#

Você pode acessar as informações do editor do pacote no content de um webhook usando o objeto publisher.

Veja abaixo o tipo de objeto publisher:

{  name: string,  groups: string[],  real_groups: string[]}

Um exemplo:

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"}'

Nota: Não é possível obter as informações do editor se o arquivo package.json já possui a propriedade publisher.

Pacote Publicado#

Você pode acessar o pacote que está sendo publicado com a palavra-chave {{publishedPackage}} do seguinte modo.

{{ publisher.name }} has published {{ publishedPackage }}

Configuration#

PropriedadeTipoObrigatórioSuportePadrãoDescrição
methodstringNãocompletoHTTP verb
packagePatternstringNãocompletoSó execute esta notificação se o nome do pacote corresponder à expressão regular
packagePatternFlagsstringNãocompletoQualquer sinalizador a ser usado com a expressão regular
headersarray/objectSimcompletoSe esse terminal exigir headers específicos, configure-os aqui como uma matriz de objetos da key: value objects.
endpointstringSimcompletodefine o endpoint da URL para esta chamada
contentstringSimcompletoqualquer expressão Handlebar