添加配置

未匹配的标注

在你的扩展被安装时,往往需要初始化一些操作,比如向框架 config 目录添加一个配置,安装一些依赖项等等。这些操作都将在 configure.ts 文件内完成。

初始化

在 adonisjs 框架中执行 node ace add project_namenode 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 的配置文件

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~