connect-concierge
Coleção de middlewares usados na aplicação de backoffice Concierge. É compatível com connect e grunt-connect (para poder ser usado em desenvolvimento).
Ao desenvolver um admin, deve ser usado com o grunt-vtex
Instalação
$ npm install --save-dev connect-concierge
Pré-requisitos
- O index do admin deve ser um
.dust
. Se ele é um .html
, basta alterar a extensão. - O
package.json
do admin deve conter a chave paths.
Exemplo:
"paths": [
"/admin/checkout"
],
Integrando com um admin
No Gruntfile
do admin desejado:
GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
module.exports = (grunt) ->
pkg = grunt.file.readJSON('package.json')
concierge = new Concierge({grunt: grunt, verbose: grunt.option('verbose')})
middlewares = concierge.getMiddlewares()
defaultConfig = GruntVTEX.generateConfig(grunt, pkg, {
relativePath: 'admin/checkout'
replaceGlob: "build/**/{index.html,index.dust,app.js,app.min.js}"
proxyTarget: 'https://portal.vtexcommercebeta.com.br:443'
additionalMiddlewares: middlewares
})
Detalhes importantes:
- A opção
relativePath
deve seguir o modelo 'admin/nome-do-admin'. Barras extras quebrarão sua aplicação - Certifique-se que a opção
replaceGlob
inclui o index.dust
Também é necessário incluir a task getTags
do grunt-vtex no inicio da task default
:
tasks = {
default: ['getTags', 'build', 'connect', 'watch']
}
Configure o NODE_ENV
para usar somente as opções de desenvolvimento:
GruntVTEX = require 'grunt-vtex'
Concierge = require 'connect-concierge'
process.env.NODE_ENV = 'development'
Ignorando middlewares
options = {
exclude: ['licenseManagerCall', 'renderTemplate']
}
concierge = new Concierge(grunt: grunt, verbose: grunt.option('verbose'))
middlewares = concierge.getMiddlewares(options)
Helpers
Diversos helpers podem ser usados no seu index.dust
para tornar sua vida mais fácil!
topbarData
Busca informações da Topbar do License Manager
<script>vtex.topbar.topbar = new vtex.topbar.Topbar({@topbarData /})</script>
version
Resolve versão mais recenente de um app no major especificado.
<script src='//io.vtex.com.br/alfredo-ui/{@version app="alfredo-ui" major="2" /}/alfredo-tpls.js'></script>
O helper version
também recebe um parâmetro opcional env
. Default: stable
aclData
Busca dados de ACL para um determinado app
<script>window.vtex.acl = {@aclData app="OMS" /}</script>
conciergeData
Expôe informações de usuário (userId e email), accountName, e environment
<script>window.vtex.conciergeData = {@conciergeData /}</script>
Middlewares
O método getMiddlewares()
devolve um array com os middlewares para desenvolvimento já na ordem correta.
Alguns middlewares são usados apenas em ambiente de desenvolvimento, outros apenas em produção:
- prepareReq (dev): Prepara dados da requisição
- checkHosts: Verifica se o host é VTEX
- replaceHost (dev): Altera o host
.vtexlocal.com.br
para .vtexcommercebeta.com.br
- redirectToKnownHost (prod): Se o host não estiver na lista de hosts conhecidos, consulta o License Manager para saber o accountName e redireciona para
.vtexcommercestable
. Hosts conhecidos:
- vtexcommerce
- vtexcommercebeta
- vtexcommercealfa
- vtexcommercestable
- vtexlocal
- vtexpayments
- vtexlab
- myvtex
- connectVtexid (dev): Utiliza o módulo connect-vtexid para resolver autenticação
- getAccountName: Resolve accountName, respeitando a ordem de prioridade:
- Header
X-VTEX-AccountName
- Cookie
concierge-account
- Querystring
an
- Host
- getEnvironment: Resolve environment, respeitando a ordem de prioridade:
- Header
X-VTEX-Environment
- Cookie
concierge-env
- Querystring
environment
- Host
- resolveTags (dev): Verifica existencia do
tags.json
baixado pelo grunt - resolveTemplate (dev): Procura o arquivo index.dust no filesystem
- licenseManagerCall: Busca informações da Topbar e faz cache por 5 minutos
- renderTemplate: Devolve resposta com html renderizado