如何开发依赖的 Composer 包而不需要提交或发布更改?

2024-04-05

我有一个应用程序 A,它有一个composer.json 文件,定义了对包 P 的依赖关系,这是我自己的新闪亮包。我的包 P 有一个composer.json 文件,它定义了对库 L 和框架 F 的依赖关系。我的包 P 还没有远程存储库,并且尚未在 packagist.org 上发布 - 我基本上正在修改它,尝试不同的东西通过在浏览器中运行应用程序A并不断修改我的包P,应用程序A所依赖的包P。

有一些问题使我的工作流程变得非常复杂:

1)定义 A 对 P 的依赖关系只能使用本地存储库,如下所述:https://getcomposer.org/doc/05-repositories.md https://getcomposer.org/doc/05-repositories.md问题是,这迫使我必须先将所有更改提交给 P,然后才能在 A 上实际进行测试。

2)参考1)这意味着我必须运行composer update每次我对 P 进行更改时。(我一开始就不想提交。)

3)另一边,当not使用 P 中的本地存储库,我无法定义 A 对 P 的真正依赖关系,这意味着运行composer install不会安装P的composer.json文件中定义的依赖项L和F。

因此,我认为有两种可能的工作流程:

1)提交 P 中的更改,composer update在 A 中,看看更改效果如何。

2)不要使用本地存储库作为依赖项,而只是copyP 的composer.json 文件中定义的依赖关系到A 的composer.json 文件才能使用composer install获取依赖项 L 和 F。

基本上我正在寻找一个工作流程来开发一个新的作曲家包,我可以在其中运行composer install/update安装所有第 3 方依赖项,但无需在我自己的本地包中提交更改来测试更改。

有没有办法解决上述问题呢?

多谢!


当我需要同时处理多个包时,我使用的解决方案是在本地注册每个包,然后在composer install或在第一个之后composer update我从供应商目录中删除该包并将其符号链接到存储本地“WIP”版本的位置。

例如:

  • 在composer.json中我需要my_vendor/packageA,它是在本地注册的~/.composer/config.json.
  • 我执行composer update my_vendor/packageA让作曲家知道我的新包。
  • After composer finishes installing my package:
    • cd 供应商/my_vendor && rm -rf packageA && ln -s ../../../packageA 。

这会给我留下类似的东西:

  • working_dir/
    • 包A/(这是我在 packageS 上工作的地方)
    • projectA/
      • app
      • src
      • vendor/
        • vendor1/
        • vendor2/
        • my_vendor/
          • 包 -> ../../../包

这允许我:

  • 改变packageA甚至从我的供应商目录中
  • 我不需要承诺packageA在我可以在我的内部使用这些更改之前projectA.

当 packageA 足够稳定时,符号链接将被删除,一切都会恢复正常,使用 VCS/packagist 的版本。

随着时间的推移,我尝试了不同的解决方案,我发现上述方法最适合我。

我尽可能使用的替代解决方案是为每个前缀手动注册 PSR-0 目录:

<?php

$autoloader = require_once __DIR__.'/vendor/autoload.php';
$autoloader->add('MyVendor\\Dummy\\', '/path/to/dummy-component/src');

// now you can use MyVendor\Dummy as normal.

注意:对于 PSR-4 有addPsr4() method.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何开发依赖的 Composer 包而不需要提交或发布更改? 的相关文章

  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • PHP 如何判断用户是否按下了 Enter 键或 Submit 按钮?

    我遇到的问题是我在一个表单中有多个提交输入 每个提交输入都有不同的值 我更愿意将它们保留为提交 Whenever the user presses Enter it is as though the topmost submit input
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • 单词之间没有空格的语言(例如亚洲语言)中的断词?

    我想让 MySQL 全文搜索适用于日语和中文文本以及任何其他语言 问题在于这些语言以及可能其他语言通常在单词之间没有空格 当您必须键入与文本中相同的句子时 搜索没有用 我不能只在每个字符之间添加空格 因为英语也必须有效 我想用 PHP 或
  • 如何解压 PHP/Lumen/Laravel 的 gzip 请求?

    我收到来自第三方的 gzip 编码文本请求 1mb 所以这是有道理的 我的测试路线 router gt post testgzip function Illuminate Http Request request decompressed
  • 如何检查PHP变量是否包含非数字?

    我只是想知道检查 PHP 变量中是否有非数字的方法以及它是否也检测字符之间的空格 需要确保我的表单字段中没有添加任何奇怪的内容 提前致谢 如果您的意思是您只想要一个包含数字的值 那么您可以使用ctype digit http php net
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  • Yii 使用 ajax 进行分页

    我需要使用ajax启用分页 我的代码 控制器 更新内容ajax function actionIndex dataProvider new CActiveDataProvider News array pagination gt array
  • 如何在响应ajax codeigniter后停止执行其他控制器

    我想知道如何在响应输出 json 数据后停止执行函数和涉及的其他控制器 就我这里的情况而言 我只是打电话test 函数于dashboard控制器 In dashboard构造函数将执行MY Login library In MY Login
  • Woocommerce 让产品显示在存档页面中

    我正在尝试让所有产品显示在我商店的存档页面中 我想知道他们的id我正在使用我的一个钩子 它在 wp head 上运行并检查 if is product category 我想以某种方式访问 产品的查询并获取它们的 ID if is prod
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • PHP 在输入流中使用 fwrite 和 fread

    我正在寻找将 PHP 输入流的内容写入磁盘的最有效方法 而不使用授予 PHP 脚本的大量内存 例如 如果可以上传的最大文件大小为 1 GB 但 PHP 只有 32 MB 内存 define MAX FILE LEN 1073741824 1
  • 表单计算器脚本基本价格未加载 OnLoad

    我的表单中有一个计算器来计算我的下拉选项选择 function select calculate on change calc input type checkbox calculate on click calc function cal
  • PHP HEREDoc (EOF) 语法在 Sublime Text 3 上突出显示与正斜杠的差异

    我不熟悉 Sublime Text 3 如何使用语法突出显示 例如 如果它纯粹依赖于主题 或者它内置于主题运行的标准中 但就我而言 使用 PHP 的 HERE 文档和转发存在一些语法突出显示差异斜线 一旦出现正斜杠 ST3 就会认为以下所有
  • 内部 while 循环不工作

    这是我项目网页上的代码片段 这里我想显示用户选择的类别 然后想显示属于该类别的主题 在那里 用户可以拥有多个类别 这没有问题 我可以在第一个 while 循环中打印所有这些类别 问题是当我尝试打印主题时 结果只显示一行 但每个类别中有更多主
  • ini_set 'session.gc_maxlifetime' 为 1 天

    If I do ini set session gc maxlifetime 86400 这是否意味着用户可以将浏览器留在同一页面 非活动状态 最多 1 天 而不必担心会话被垃圾收集并被注销 如果服务器配置不支持此功能会发生什么 它会给我一
  • post php mysql 的拆分关键字

    我有一个表存储帖子 ID 它的标签如下 Post id Tags 1 keyword1 keyword2 keyword3 我想循环遍历该表中的每一行并执行以下操作 将关键字1 关键字2 关键字3放入新表中 word id word val

随机推荐

  • java中如何对对象进行排序? [复制]

    这个问题在这里已经有答案了 可能的重复 如何按属性对对象的数组列表进行排序 https stackoverflow com questions 2535124 how to sort an arraylist of objects by a
  • 将行恢复为默认列值 mysql

    我正在使用 MySQL 社区服务器 5 1 有没有一种方法可以通过一个查询将所有行设置回默认列值 我刚刚添加了很多行 我为大多数指定的列设置了默认值 但由于某种原因 所有列值都设置为 0 我想知道是否有一个查询将所有列值设置为其默认值 并且
  • java.lang.IllegalStateException:找不到工厂javax.faces.application.ApplicationFactory的备份[重复]

    这个问题在这里已经有答案了 我想从 jsf 2 1 迁移到 2 2 但无法运行我的服务器 Tomcat 导致出现以下错误 我谨通知您 我在项目 Maven 中使用了 Hibernate Spring JSF Root WebApplicat
  • Windows 7 中 NASM 程序中的 I/O

    我想用 NASM 汇编语言进行编程 我有 NASM 2 07 和 Borland C 编译器 5 0 bcc32 我的操作系统是Windows 7 我不知道如何在Windows平台上使用NASM进行输入和输出 请问你能帮我吗 最简单的方法是
  • 调试 javascript 有哪些好的技巧? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 所以我相当经常地使用 JavaScr
  • 关于C++类中typedef函数的疑问

    我需要定义一个返回类对象的函数 假设我有一个名为狗的类 h 中的类声明和 cpp 中的实现 当狗死时 我想调用一个函数让狗管理器知道这一点 在dog的SetFunc中我将收到要调用的函数 Dog h class Dog public typ
  • 从插件 (.so) 加载 Qt UI(带图像)时遇到问题

    我有一个插件 可以加载并显示一个自定义小部件 该小部件显示从资源文件 resources qrc 加载的图像 作为 QLabel 的背景 我面临的问题是 加载插件后 它会正确显示小部件 但不显示图像 我尝试将 Q INIT RESOURCE
  • Safari 上的 Flex-wrap 问题

    我试图让两个元素填充其容器并在达到某个最小尺寸时进行包装 我的代码在除 safari 之外的所有浏览器上都能完美运行 而且我无法找到替代方案 这似乎是 flex basis 0 的问题 问题是这样的 http www cssdesk com
  • 错误:“grep:参数列表太长”[重复]

    这个问题在这里已经有答案了 我正在尝试运行以下命令 但出现参数太长错误 你能帮我吗 HOST grep rl pattern home public html bash bin grep Argument list too long 有没有
  • Hadoop - 如何收集没有值的文本输出

    我正在从事地图缩减工作 我想知道是否可以向我的输出文件发出自定义字符串 没有计数 没有其他数量 只有一团文本 这是我正在思考的基本想法 public static class Map extends MapReduceBase implem
  • VueJS 和 Laravel 的 Textarea v-model 初始值

    我想使用刀片语法将用户名显示为 Markdown 编辑器的默认文本区域值
  • 自动滚动 JavaFX TextFlow

    我有一个 JavaFXTextFlow包裹在一个ScrollPane 我试图让它在有新内容时自动滚动到底部Text被添加到TextFlow 我尝试过附加监听器以最大化ScrollPane s vvalue to The ScrollPane
  • Rails 包含查询,其条件不返回左表中的所有结果

    我有两个表格 帖子和图像 以下是 schema rb 中的相关部分 create table posts force true do t t string name t string body t datetime created at t
  • 更新张量流中的张量切片

    我想更新 3 维张量的切片 下列的如何在 Tensorflow 中进行切片分配 https stackoverflow com questions 39157723 how to do slice assignment in tensorf
  • 我可以使用QTimer来实现多线程算法吗?

    目前我需要实现一个基于Qt的多线程算法 也许我应该尝试延长QThread 但在此之前 我想问一下 我是否可以只使用两个QTimers timer1 timer2 并将它们的超时信号分别连接到线程上 来实现一个 假 的多线程程序 您可以连接
  • WCF 中的两个接口和一个具体类

    请检查下面的示例 namespace GServices ServiceKnownType typeof SearchType ServiceContract SessionMode SessionMode Allowed public i
  • 组合两张地图

    Scala 中是否有一个函数可以组合两个映射 或者 flatMap 是一个明智的方法吗 scala gt val caps Map String Int Map A 1 B 2 caps Map String Int Map A gt 1
  • tinypng.org 如何压缩 PNG 文件? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 http tinypng org http tinypng org 是一项很棒的服务 他们将我的 png 图像优化了约 67 他们的服务如何运作 他们
  • React.js使用axios将数据发布到php,但php echo为空

    我正在使用react js axios和PHP将数据发布到MySQL数据库 这是我的react js代码 sendData var data new FormData data append name jessie data append
  • 如何开发依赖的 Composer 包而不需要提交或发布更改?

    我有一个应用程序 A 它有一个composer json 文件 定义了对包 P 的依赖关系 这是我自己的新闪亮包 我的包 P 有一个composer json 文件 它定义了对库 L 和框架 F 的依赖关系 我的包 P 还没有远程存储库 并