添加配置
在你的扩展被安装时,往往需要初始化一些操作,比如向框架 config
目录添加一个配置,安装一些依赖项等等。这些操作都将在 configure.ts
文件内完成。
初始化
在 adonisjs 框架中执行 node ace add project_name
或 node ace configure project_name
命令时将执行 configure
方法。
// configure.ts
import ConfigureCommand from '@adonisjs/core/commands/configure'
import { stubRoot} from './stubs/main.js'
export async function configure(_command: ConfigureCommand) {
const codemods = await _command.createCodemods()
await codemods.makeUsingStub(stubRoot, 'config.stub', {})
}
在 configure 方法中传递了一个 _command 参数,该参数为 adonisjs 的 scafolding & codemodes 模块,详细说明可参考 官方文档 Scafolding
模板
在 stubs
添加配置文件模板,该模板可接收 makeUsingStub 方法的第三个参数。详细使用说明可参考Tempura模板引擎。
{{{
exports({ to: app.configPath('project_name.ts') })
}}}
import defineConfig from 'project_name/define_config'
const projectConfig = defineConfig({
project_name:"MyProjectName"
})
export default projectConfig
定义配置
// define_config.ts
import { ConfigItem } from './src/types.js'
export default defineConfig(config:ConfigItem){
return {
project_name:"MyProjectName"
...config
}
}
为了应用程序的健状性,我们应该严格定义 config 的 types 你也可以不定义,完全取决于你的喜好
// src/types.ts
export type ConfigItem = {
project_name:string
}
导出配置文件
// package.json
"files": [
"build/configure.d.ts",
"build/configure.js",
"build/define_config.d.ts",
"build/define_config.js",
],
"exports": {
"./define_config":"./build/define_config.js"
}
至此你的扩展就完成了安装初始化。在 adonisjs 框架中执行 node ace add project_name
时,你的框架 config 目录将生成一个 config/project_name.ts
的配置文件