franzl/studio

用风格开发您的Composer库

资助包维护!
franzliedke
Tidelift

安装次数: 595,858

依赖者: 15

建议者: 0

安全: 0

星星: 1,135

关注者: 45

分支: 74

开放问题: 23

类型:composer-plugin

0.16.0 2022-10-12 10:32 UTC

README

用风格开发您的Composer库。

此包使您在使用它们的同时轻松开发Composer包。

您不必从Packagist存储库安装您正在工作的包,而是使用Studio从文件系统创建它们的符号链接。在底层,它使用Composer的路径存储库来实现这一点。因此,您不需要在vendor目录中开发。

Studio还知道如何配置可能成为您工作流程一部分的开发工具。这包括以下内容

  • 自动加载(srctests
  • PhpUnit
  • PhpSpec
  • TravisCI

将来这个列表还会更长。

安装

Studio可以用Composer全局或按项目安装

全局(推荐):composer global require franzl/studio(作为studio使用)

请确保将 ~/.composer/vendor/bin 目录添加到您的PATH中,以便系统可以定位到 studio 可执行文件。

按项目:composer require --dev franzl/studio(作为vendor/bin/studio使用)

用法

所有命令都应该从您的项目的根目录运行,其中包含 composer.json 文件。

工作流程

通常,您将需要在应用程序中要求您自己的Composer包之一。使用Studio,您可以拉取包的本地副本,而不是来自Packagist的版本。关键是:您可以在狗粮的同时继续开发您的库,但您不需要更改您的composer.json文件

加载本地包

要在应用程序中使用您自己的库,您需要告诉Studio它在何处可以找到该库。您可以使用load命令这样做。当Composer解析依赖关系时,Studio将介入并将本地目录符号链接到Composer的vendor目录。

因此,要由Studio管理您那令人敬畏的世界霸权库,您只需运行以下命令

$ studio load path/to/world-domination

此命令应在当前工作目录中创建一个studio.json文件。它包含Studio要加载的目录列表。

接下来,如果您还没有这样做,请确保在您的composer.json中实际要求该包

"require": {
    "my/world-domination": "dev-master"
}

最后,告诉Studio设置符号链接

$ composer update my/world-domination

如果一切顺利,您现在应该会在Composer的输出中看到如下简要消息

[Studio] 加载路径安装程序

这就是幕后会发生的事情

  1. Composer开始检查依赖项更新。
  2. Studio介入,并通知Composer优先使用studio.json文件中列出的目录中的包,而不是从Packagist下载它们。
  3. Composer将这些包符号链接到vendor目录或其他适当的位置(例如,对于自定义安装程序)。因此,对于您的应用程序,这些包的行为就像“正常”的Composer包一样。
  4. Composer为Studio包生成适当的自动加载规则。
  5. 对于非Studio包,Composer始终按常规工作。

小技巧:如果您将所有库放在一个目录中,可以使用通配符让Studio找到它们。

$ studio load 'path/to/my/libraries/*'

启动包开发

如果您还没有开始世界征服,Studio还包括一个用于创建新Composer包的便捷生成器。除了常规仪式外,它还包含一些可选组件,如单元测试配置、Travis-CI的持续集成等。

首先,我们需要为开发包创建本地目录

$ studio create domination
# or if you want to clone a git repo
$ studio create domination --git git@github.com:vendor/domination.git

在回答一系列问题后,它将在当前工作目录中的domination子目录中创建(或下载)一个包。在发布到Packagist之前,您可能需要一些时间来开发这个包。因此,如果您在Composer应用程序中运行此命令,Studio会建议您立即加载新包。这实际上等同于运行studio load domination

最后,别忘了使用composer require将您的包实际添加为依赖项。

命令参考

create: 创建新的包骨架

$ studio create foo/bar

此命令创建一个Composer包的骨架,其中已填充一些有用的文件以帮助您开始。在上面的例子中,我们在项目根目录中的foo/bar文件夹中创建了一个新包。所有依赖项在使用Composer时都可用。

在创建过程中,您将需要回答一系列问题来配置您的骨架。这包括测试工具配置、Travis CI和自动加载等。

create --git: 通过克隆Git仓库来管理现有包

$ studio create bar --git git@github.com:me/myrepo.git

这将克隆给定的Git仓库到bar目录并安装其依赖项。

create --submodule: 通过将Git仓库作为子模块加载来管理现有包

$ studio create bar --submodule git@github.com:me/myrepo.git

这将把给定的Git仓库加载到bar目录作为子模块并安装其依赖项。

create --options: 在加载仓库时提供特定的Git选项

$ studio create bar --git git@github.com:me/myrepo.git --options="--single-branch --branch=mybranch"
$ studio create bar --submodule git@github.com:me/myrepo.git --options="-b mybranch"

这将加载给定的Git仓库并检出特定分支。要查看您所有可用的选项,请查看git clone --helpgit submodule add --help

load: 使给定本地路径中的所有包对Composer可用

$ studio load baz

这将确保baz目录中的所有包(也支持带有通配符的路径)都可以使用Composer进行自动加载。

unload: 停止管理本地路径

$ studio unload foo

这将从studio.json配置文件中删除路径foo。这意味着该路径中的任何包都不会再对Composer可用(除非它们仍在Packagist上托管)。

这不会从文件系统中删除包的内容。有关完全删除包的信息,请参阅scrap

您可以使用load命令重新加载路径。

scrap: 删除包

有时您想要丢弃一个包。您可以使用scrap命令,传入一个Studio管理的包的路径。

$ studio scrap foo

不必担心 - 您将被要求先确认。

许可证

此代码在MIT许可证下发布。这意味着您可以几乎用它做任何事情,只要保留版权声明和随附的许可证文件即可。

贡献

如果您遇到问题或有好主意,请随时发送pull请求或创建问题。任何反馈都受到欢迎!

franzl/studio for enterprise

作为Tidelift订阅的一部分提供

franzl/studio的维护者以及成千上万的包维护者正在与Tidelift合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康,同时为使用的确切依赖项的维护者付费。了解更多。