rikudou/installer

此包已废弃且不再维护。未建议替代包。

用于包自动配置的Composer插件

安装数: 8 315

依赖者: 1

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 1

公开问题: 0

类型:composer-plugin

v2.2.0 2019-07-17 11:00 UTC

README

此Composer插件允许您将配置与支持的工程项目类型一起打包。

一旦此包在您的项目中安装,它就会负责配置您的包。

安装

composer require rikudou/installer

使用

如果您想在您的包中使用安装器,只需将其添加为依赖项并创建配置目录 .installer

.installer 目录具有以下结构

.installer/[project-type-directory]/[operation-type]

项目类型

目前仅支持Symfony 4项目类型,但您可以在您的包中定义自己的类型(更多内容见下文)。

Symfony 4项目类型

  • 可用目录
    • symfony4
    • symfony
  • 示例目录
    • .installer/symfony4/[operation-type]
    • .installer/symfony/[operation-type]
  • 通过检测
    • 目录 config/packages 的存在
  • 机器名
    • symfony4

覆盖项目类型 composer.json

如果您想在无法检测到项目类型的情况下为项目设置项目类型,可以在您的 composer.json 中设置 extra.rikudou.installer.project-type,其值应该是所需项目类型的机器名。

如果不存在该类型的处理程序,它将被忽略,并且仍然会进行检测。

示例

{
  "require": {
    "php": ">=7.2"
    // your other dependencies
  },
  "extra": {
    "rikudou": {
      "installer": {
        "project-type": "symfony4"
      }
    }
  }
}

注意:JSON 不支持注释,如果您复制上面的片段,请删除它们

操作类型

复制文件操作

将从操作目录 (files) 中的所有内容复制到项目的根目录。

在卸载包时,将删除与包中定义的内容相同的任何文件,并删除目录结构中定义的任何空目录。

  • 目录结构
    • .installer/[project-type-dir]/files
  • 示例目录
    • .installer/symfony4/files
    • .installer/symfony/files
  • 示例完整目录结构
    • .installer/symfony/files/config/packages/my_config_file.yaml

环境变量操作

.env 文件中定义您的环境变量,内容将被复制到项目根目录中的 .env.env.dist.env.example 文件(如果这些文件存在)。

在卸载包时,将从受影响的文件中删除环境变量。

  • 目录结构
    • .installer/[project-type-dir]/.env
  • 示例文件路径
    • .installer/symfony4/.env
    • .installer/symfony/.env

Bundle 注册操作

编写一个将附加到Symfony中的 bundles.php 文件的配置包。

在卸载软件包时,捆绑配置将被删除。

  • 目录结构
    • .installer/[项目类型目录]/bundles.php
  • 示例文件路径
    • .installer/symfony4/bundles.php

示例内容

<?php

return [
    Vendor\MyCoolBundle::class => ['all' => true],
];

禁用 Rikudou 安装程序

您可以通过 composer.json 配置禁用您项目的 Rikudou 安装程序。

  • extra.rikudou.installer.enabled 设置为 false
  • 将软件包名称添加到 extra.rikudou.installer.exclude 数组中,以忽略特定软件包的安装程序

示例

{
  "require": {
    "php": ">=7.2"
    // your other dependencies
  },
  "extra": {
    "rikudou": {
      "installer": {
        "enabled": false, // disable the installer
        "exclude": [
          "vendor/package" // exclude composer package called vendor/package
        ]
      }
    }
  }
}

注意:JSON 不支持注释,如果您复制上面的片段,请删除它们

定义自定义项目类型

如果您想支持非默认项目类型,请在您的软件包中定义位于 .installer/project-types 目录的 php 类,这些类实现了 Rikudou\Installer\ProjectType\ProjectTypeInterface

接口方法和它应该返回的内容在接口的 PHPDoc 中描述。

定义的类型类的名称或命名空间无关紧要,但您应避免使用未命名空间类,因为可能存在名称冲突。