franzl / studio
用风格开发您的Composer库
Requires
- php: >=7.0
- composer-plugin-api: ^1.0 || ^2.0
- symfony/console: ^2.7 || ^3.0 || ^4.0 || ^5.0 || ^6.0
- symfony/filesystem: ^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0
- symfony/process: ^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0
Requires (Dev)
- composer/composer: ^2.4.2
- phpspec/phpspec: ^6.3 || ^7.0
Replaces
- franzliedke/studio: 0.16.0
This package is auto-updated.
Last update: 2024-09-21 20:12:56 UTC
README
用风格开发您的Composer库。
此包使您在使用它们的同时轻松开发Composer包。
您不必从Packagist存储库安装您正在工作的包,而是使用Studio从文件系统创建它们的符号链接。在底层,它使用Composer的路径存储库来实现这一点。因此,您不需要在vendor
目录中开发。
Studio还知道如何配置可能成为您工作流程一部分的开发工具。这包括以下内容
- 自动加载(
src
和tests
) - 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] 加载路径安装程序
这就是幕后会发生的事情
- Composer开始检查依赖项更新。
- Studio介入,并通知Composer优先使用
studio.json
文件中列出的目录中的包,而不是从Packagist下载它们。 - Composer将这些包符号链接到
vendor
目录或其他适当的位置(例如,对于自定义安装程序)。因此,对于您的应用程序,这些包的行为就像“正常”的Composer包一样。 - Composer为Studio包生成适当的自动加载规则。
- 对于非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 --help
和git 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合作,为构建应用程序时使用的开源依赖项提供商业支持和维护。节省时间,降低风险,并提高代码健康,同时为使用的确切依赖项的维护者付费。了解更多。