nemo64/environment

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

基础 PHP 环境

安装: 9

依赖: 1

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 0

开放问题: 0

类型:composer-plugin

v2.0.0 2018-05-11 19:58 UTC

This package is not auto-updated.

Last update: 2022-02-01 13:12:48 UTC


README

Build Status Latest Stable Version Total Downloads License

一个基本的 PHP 开发环境

此 composer 插件旨在帮助你在多个项目中构建基础环境。

它通过提供 API 来定义通用配置文件来实现这一点。它也非常可扩展,因此您可以添加自己的配置来满足您的需求。

启动新项目

  • mkdir your_project_folder && cd your_project_folder
  • composer init -n
  • composer require --dev nemo64/environment

现在使用 make 来控制您的环境。要查看您能做什么,请运行 make help。基本上,您想要运行 make start 来启动本地服务器,以及 make stop 来停止它。您的 web 服务器默认在 localhost:80 上可用。

创建的文件以及由谁创建

  • docker-compose.ymlDockerfile-* 文件将由 DockerConfigurator 生成。这些文件将使用 ChecksumArea 策略写入。您可以根据需要编辑/添加/删除行,但请尽量避免,因为这些行将不会更改。
    • PhpConfigurator 将根据 composer 的 platform.php 中定义的版本添加 chialab/php(apache)镜像。
  • .gitignore 文件将由 GitignoreConfigurator 创建。要修改 gitignore,只需写入它。生成器将查看您的规则并将它们与它应该添加的规则合并。如果您想删除一条规则,只需在前面加上 # 即可,这样规则就不会再次被添加。
    • ComposerConfigurator 将添加 vendor 文件夹。
    • DockerConfigurator 将添加 docker-compose.log 文件。
  • Makefile 文件将由 MakefileConfigurator 生成。
    • ComposerConfigurator 将添加一个依赖于 composer.* 文件的 vendor 目标,以便在需要时自动运行 composer install
    • DockerConfigurator 将添加虚拟目标 startstopclean。还将添加一个 docker-compose.log 目标,当 Dockerfile 发生更改时,它会运行构建过程。

它的工作原理

与其他大多数脚手架项目不同,这是一个 composer 插件,旨在不仅创建基础文件,还更新它们。

此插件将在每次 composer installcomposer update 时运行,检查是否有条件发生变化,并可能更新一些文件。例如

  • 您将获得一个基本的 Docker PHP 环境,它将保持与您通过 composer 配置的 platform.php 版本同步。
  • 您将获得一个 makefile 来轻松启动/停止和安装您的项目(只需运行 make serve 即可)。根据您的配置,您还可以将其他依赖管理命令添加到安装命令中。
  • 您的 .gitignore 文件将始终包含所有已安装的库,即使它们安装在外部供应商目录之外,这在像 typo3 这样的旧项目中很常见。

这只是一个基本功能。您可以通过创建一个扩展 ConfiguratorInterface 的类来实现自己的规则。在这个类中,您可以创建自己的文件或配置现有的 Configurator,例如添加更多的 gitignore 规则。

扩展功能

Configurator 不仅限于其他 composer 插件。您可以将它们添加到您的根项目或甚至其他库中,如果它们需要在它们的文件夹之外的项目中添加某些内容。如果您需要将文件添加到项目的 .gitignore 文件中,您可以简单地添加自己的 Configurator,如下所示

<?php

class MyConfigurator implements \Nemo64\Environment\Configurator\ConfiguratorInterface
{
    public function getInfluences(): array
    {
        return [
            \Nemo64\Environment\Configurator\GitignoreConfigurator::class,
        ];
    }
    
    public function configure(\Nemo64\Environment\ExecutionContext $context): void
    {
         $context->get(\Nemo64\Environment\Configurator\GitignoreConfigurator::class)->add('/tmpdir');
    }
}

并在您的 composer.json 中提供文件提示

{
    "extra": {
        "nemo64/environment": {
            "classes": ["Namespace\\MyConfigurator"]
        }
    }
}

完成。每当您使用 composer 时,都会调用您的 configure 方法。您可以检查是否安装了其他扩展,读取配置文件。甚至可以使用 io 向用户提问(但请确保这些只问一次)。

指南

如果要让您的 Configurator 有用,请确保它具有高度的适应性。GitignoreConfigurator 不会删除您已创建的规则,甚至保留注释。因此,外部用户不需要学习一种新的配置文件的方式,只需添加一个规则,它就会按预期工作。