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:
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:
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.
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
.
"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.
// ❌ 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)
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
const someConfig = {
databaseTable: 'users'
}
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ção | Stub | Usado por |
---|---|---|
app.ts | https://git.io/JfefZ | Usado pelo núcleo do framework, incluindo o servidor HTTP, logger, validador e o gerenciador de ativos. |
bodyparser.ts | https://git.io/Jfefn | Usado pelo middleware bodyparser |
cors.ts | https://git.io/JfefC | Usado pelo hook do servidor CORS |
hash.ts | https://git.io/JfefW | Usado pelo pacote hash |
session.ts | https://git.io/JeYHp | Usado pelo pacote session |
shield.ts | https://git.io/Jvwvt | Usado pelo shield package |
static.ts | https://git.io/Jfefl | Usado pelo servidor de arquivo estático |
auth.ts | https://git.io/JY0mp | Usado pelo pacote auth |
database.ts | https://git.io/JesV9 | Usado pelo Lucid ORM |
mail.ts | https://git.io/JvgAf | Usado pelo pacote AdonisJS mail |
redis.ts | https://git.io/JemcF | Usado pelo pacote Redis |
drive.ts | https://git.io/JBt3o | Usado pelo provedor Drive |
ally.ts | https://git.io/JOdi5 | Usado pelo pacote Social authentication (Ally) |