Skip to content

Config

A configuração de tempo de execução do seu aplicativo AdonisJS é armazenada dentro do diretório config. O núcleo do framework e muitos dos pacotes instalados dependem desses arquivos de configuração. Portanto, certifique-se de analisar os arquivos de configuração e ajustar quaisquer configurações (se necessário).

Também recomendamos armazenar todas as configurações personalizadas necessárias para seu aplicativo dentro deste diretório em vez de armazená-las em vários lugares.

Importar arquivos de configuração

Você pode importar os arquivos de configuração dentro da base de código do seu aplicativo usando a instrução import. Por exemplo:

ts
import { appKey } from 'Config/app'

Usando o provedor de configuração

Em vez de importar diretamente os arquivos de configuração, você também pode usar o provedor Config da seguinte forma:

ts
import Config from '@ioc:Adonis/Core/Config'

Config.get('app.appKey')

O método Config.get aceita um caminho separado por pontos para a chave de configuração. No exemplo acima, lemos a propriedade appKey do arquivo config/app.ts.

Além disso, você pode definir um valor de fallback. O valor de fallback é retornado quando o valor de configuração real está ausente.

ts
Config.get('database.connections.mysql.host', '127.0.0.1')

Não há benefícios diretos em usar o provedor Config em vez de importar manualmente os arquivos de configuração. No entanto, o provedor Config é a única opção nos seguintes cenários.

  • Pacotes externos: Pacotes externos nunca devem depender do caminho do arquivo para ler/importar a configuração. Em vez disso, ele deve usar o provedor Config. Usar o provedor Config cria um acoplamento flexível entre o aplicativo e o pacote. config método global para referenciar os valores de configuração.

Alterando o local da configuração

Você pode atualizar o local do diretório config modificando o arquivo .adonisrc.json.

json
"directories": {
  "config": "./configurations"
}

O provedor de configuração lerá automaticamente o arquivo do diretório recém-configurado, e todos os pacotes subjacentes que dependem dos arquivos de configuração funcionarão bem.

Advertências

Todos os arquivos de configuração dentro do diretório config são importados automaticamente pelo framework durante a fase de inicialização. Como resultado disso, seus arquivos de configuração não devem depender das ligações do contêiner.

Por exemplo, o código a seguir será interrompido ao tentar importar o provedor Route antes mesmo de ser registrado no contêiner.

ts
// ❌ Não funciona
import Route from '@ioc:Adonis/Core/Route'

const someConfig = {
  assetsUrl: Route.makeUrl('/assets')
}

Você pode considerar essa limitação ruim. No entanto, ela tem um impacto positivo no design do aplicativo.

Fundamentalmente, seu código de tempo de execução deve depender da configuração e NÃO o contrário. Por exemplo:

ERROR

Não derive a configuração do código de tempo de execução (Modelo neste caso)

ts
import User from 'App/Models/User'

const someConfig = {
  databaseTable: User.table
}

SUCESSO

Em vez disso, faça seu modelo ler a tabela do arquivo de configuração

ts
const someConfig = {
  databaseTable: 'users'
}
ts
import someConfig from 'Config/file/path'

class User extends Model {
  public static table = someConfig.databaseTable
}

Referência de configuração

Conforme você instala e configura pacotes AdonisJS, eles podem criar novos arquivos de configuração. A seguir está uma lista de arquivos de configuração (com seus modelos padrão) usados ​​pelas diferentes partes do framework.

Arquivo de configuraçãoStubUsado por
app.tshttps://git.io/JfefZUsado pelo núcleo do framework, incluindo o servidor HTTP, logger, validador e o gerenciador de ativos.
bodyparser.tshttps://git.io/JfefnUsado pelo middleware bodyparser
cors.tshttps://git.io/JfefCUsado pelo hook do servidor CORS
hash.tshttps://git.io/JfefWUsado pelo pacote hash
session.tshttps://git.io/JeYHpUsado pelo pacote session
shield.tshttps://git.io/JvwvtUsado pelo shield package
static.tshttps://git.io/JfeflUsado pelo servidor de arquivo estático
auth.tshttps://git.io/JY0mpUsado pelo pacote auth
database.tshttps://git.io/JesV9Usado pelo Lucid ORM
mail.tshttps://git.io/JvgAfUsado pelo pacote AdonisJS mail
redis.tshttps://git.io/JemcFUsado pelo pacote Redis
drive.tshttps://git.io/JBt3oUsado pelo provedor Drive
ally.tshttps://git.io/JOdi5Usado pelo pacote Social authentication (Ally)