AdonisRC 文件
adonisrc.ts 文件用于配置应用的工程设置。在这个文件中,你可以注册服务提供者、定义命令别名、指定要复制到生产构建的文件,以及更多配置。
adonisrc.ts 文件不仅会被你的 AdonisJS 应用导入,还会被其他工具导入。因此,你绝对不能在此文件中编写任何与具体应用相关或与环境相关的条件判断代码。
该文件包含运行应用所需的最低配置。不过,你可以通过运行 node ace inspect:rcfile 命令查看完整的文件内容。
node ace inspect:rcfile
你可以使用 app 服务访问解析后的 RCFile 内容。
import app from '@adonisjs/core/services/app'
console.log(app.rcFile)
typescript
typescript 属性用于告知框架和 Ace 命令你的应用使用了 TypeScript。目前,该值始终设置为 true。不过,我们后续将允许使用 JavaScript 编写应用。
directories
一组脚手架命令所使用的目录及其路径。如果你决定重命名特定目录,请在 directories 对象中更新其新路径,以便通知脚手架命令。
{
directories: {
config: 'config',
commands: 'commands',
contracts: 'contracts',
public: 'public',
providers: 'providers',
languageFiles: 'resources/lang',
migrations: 'database/migrations',
seeders: 'database/seeders',
factories: 'database/factories',
views: 'resources/views',
start: 'start',
tmp: 'tmp',
tests: 'tests',
httpControllers: 'app/controllers',
models: 'app/models',
services: 'app/services',
exceptions: 'app/exceptions',
mails: 'app/mails',
middleware: 'app/middleware',
policies: 'app/policies',
validators: 'app/validators',
events: 'app/events',
listeners: 'app/listeners',
stubs: 'stubs',
}
}
preloads
一组在应用启动时要导入的文件。这些文件会在服务提供者启动之后立即被导入。
你可以定义导入该文件所处的环境。可用选项如下:
web环境指为 HTTP 服务器启动的进程。console环境指除repl命令之外的 Ace 命令。repl环境指使用node ace repl命令启动的进程。- 最后,
test环境指为运行测试而启动的进程。
你可以使用 node ace make:preload 命令创建并注册一个预加载文件。
{
preloads: [
() => import('./start/view.js')
]
}
{
preloads: [
{
file: () => import('./start/view.js'),
environment: [
'web',
'console',
'test'
]
},
]
}
metaFiles
metaFiles 数组是你在创建生产构建时要复制到 build 文件夹的一组文件。
这些是非 TypeScript/JavaScript 文件,你的应用要正常运行,生产构建中必须包含它们。例如 Edge 模板、i18n 语言文件等。
pattern:用于查找匹配文件的 glob 模式。reloadServer:当匹配文件发生变化时重新加载开发服务器。
{
metaFiles: [
{
pattern: 'public/**',
reloadServer: false
},
{
pattern: 'resources/views/**/*.edge',
reloadServer: false
}
]
}
commands
一组用于从已安装包中懒加载导入 ace 命令的函数。你应用自己的命令会被自动导入,因此无需显式注册它们。
另见:创建 ace 命令
{
commands: [
() => import('@adonisjs/core/commands'),
() => import('@adonisjs/lucid/commands')
]
}
commandsAliases
一组命令别名的键值对。通常用于为那些难以输入或记忆的命令创建好记的别名。
另见:创建命令别名
{
commandsAliases: {
migrate: 'migration:run'
}
}
你还可以为同一个命令定义多个别名。
{
commandsAliases: {
migrate: 'migration:run',
up: 'migration:run'
}
}
tests
tests 对象用于注册测试套件以及测试运行器的一些全局设置。
另见:测试入门
{
tests: {
timeout: 2000,
forceExit: false,
suites: [
{
name: 'functional',
files: [
'tests/functional/**/*.spec.ts'
],
timeout: 30000
}
]
}
}
timeout:为所有测试定义默认超时时间。forceExit:测试一完成就强制退出应用进程。通常,优雅退出才是良好的实践。suite.name:测试套件的唯一名称。suite.files:用于导入测试文件的一组 glob 模式。suite.timeout:套件内所有测试的默认超时时间。
providers
一组在应用启动阶段要加载的服务提供者。
默认情况下,服务提供者在所有环境中都会被加载。不过,你也可以显式定义一个环境数组来指定加载该提供者的环境。
web环境指为 HTTP 服务器启动的进程。console环境指除repl命令之外的 Ace 命令。repl环境指使用node ace repl命令启动的进程。- 最后,
test环境指为运行测试而启动的进程。
服务提供者会按照其在 providers 数组中注册的顺序被加载。
另见:服务提供者
{
providers: [
() => import('@adonisjs/core/providers/app_provider'),
() => import('@adonisjs/core/providers/http_provider'),
() => import('@adonisjs/core/providers/hash_provider'),
() => import('./providers/app_provider.js'),
]
}
{
providers: [
{
file: () => import('./providers/app_provider.js'),
environment: [
'web',
'console',
'test'
]
},
{
file: () => import('@adonisjs/core/providers/http_provider'),
environment: [
'web'
]
},
() => import('@adonisjs/core/providers/hash_provider'),
() => import('@adonisjs/core/providers/app_provider')
]
}
assetsBundler
serve 和 build 命令会尝试检测你的应用用于编译前端资源的打包工具。
检测过程是:通过查找 vite.config.js 文件来检测 vite,通过查找 webpack.config.js 文件来检测 Webpack encore。
不过,如果你使用了不同的资源打包工具,可以按如下方式在 adonisrc.ts 文件中进行配置。
{
assetsBundler: {
name: 'vite',
devServer: {
command: 'vite',
args: []
},
build: {
command: 'vite',
args: ["build"]
},
}
}
name- 你所使用的资源打包工具的名称。它仅用于展示。devServer.*- 用于启动开发服务器的命令及其参数。build.*- 用于创建生产构建的命令及其参数。