Skip to content

package.json

可以在模块的package.json中设置一些元配置

vonaModule.capabilities

如果需要在模块中提供一些钩子功能,从而在系统启动时初始化资源,或者向系统注入一些能力,那么就需要配置vonaModule.capabilities

Vona 提供的许多核心模块都是采用这种机制实现的。比如,模块 a-queue 的配置:

typescript
{
  "name": "vona-module-a-queue",
  "vonaModule": {
    "capabilities": {
      "monkey": true
    },
  },
}
  • monkey: 设为 true,就说明该模块提供了钩子能力

vonaModule.dependencies

如果模块需要依赖其他模块,那么,需要配置vonaModule.dependencies,比如:模块 home-user 的配置:

typescript
{
  "name": "vona-module-home-user",
  "vonaModule": {
    "dependencies": {
      "a-vona": "5.0.0"
    },
  },
}

vonaModule.globalDependencies

如果模块需要提供全局的依赖项,那么,需要配置vonaModule.globalDependencies,比如:模块 a-core 的配置:

typescript
{
  "name": "vona-module-a-core",
  "vonaModule": {
    "globalDependencies": {
      "chalk": true,
      "moment": true,
    },
  },
}
  • 由于模块 a-core 将chalkmoment声明为全局依赖,那么系统就会将这些依赖项放入项目的 packages.json 当中,从而所有其他模块都可以直接导入这些模块,并使用

vonaModule.globalDependenciesDev

如果模块需要提供全局的依赖项,那么,需要配置vonaModule.globalDependenciesDev,比如:模块 a-core 的配置:

typescript
{
  "name": "vona-module-a-core",
  "vonaModule": {
    "globalDependenciesDev": {
      "@types/koa": true,
      "@types/node": true,
    },
  },
}
  • 由于模块 a-core 将@types/koa@types/node声明为全局开发依赖,那么系统就会将这些依赖项放入项目的 packages.json 当中,从而所有其他模块都可以直接导入这些模块,并使用

基于 MIT 许可发布