franzliedke/studio

此包已被 放弃 并不再维护。作者建议使用 franzl/studio 包。

用风格开发您的Composer库

资助包维护!
franzliedke
Tidelift

安装: 546

依赖项: 0

建议者: 0

安全: 0

星星: 1,127

关注者: 45

分支: 72

开放问题: 22

类型: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合作,为您提供开源依赖的商业支持和维护服务。使用这种方式,您可以节省时间、降低风险、提升代码质量,同时为使用的确切依赖项的维护者付费。 了解更多。