nemo64 / environment
基础 PHP 环境
Requires
- php: 7.1.* || 7.2.*
- composer-plugin-api: ^1.1
- symfony/options-resolver: >= 2.6, < 5.0
- symfony/yaml: >= 2.8, < 5.0
- webmozart/path-util: ^2.3
Requires (Dev)
- composer/composer: ^1.3
- mikey179/vfsstream: ^1.6
- phpunit/phpunit: ^7.0
This package is not auto-updated.
Last update: 2022-02-01 13:12:48 UTC
README
一个基本的 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.yml
和Dockerfile-*
文件将由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
将添加虚拟目标start
、stop
和clean
。还将添加一个docker-compose.log
目标,当 Dockerfile 发生更改时,它会运行构建过程。
它的工作原理
与其他大多数脚手架项目不同,这是一个 composer 插件,旨在不仅创建基础文件,还更新它们。
此插件将在每次 composer install
和 composer 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
不会删除您已创建的规则,甚至保留注释。因此,外部用户不需要学习一种新的配置文件的方式,只需添加一个规则,它就会按预期工作。