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