当前位置: 首页 > 知识库问答 >
问题:

编写器:删除包,清除依赖项,不更新其他包

冀弘厚
2023-03-14

假设我有一个由Composer安装的两个包的项目:

php composer.phar require 'squizlabs/php_codesniffer:~2.0' 'phpmd/phpmd:~2.1'

自动生成的composer.json文件如下:

{
    "require": {
        "squizlabs/php_codesniffer": "~2.0",
        "phpmd/phpmd": "~2.1"
    }
}

在自动生成的composer.lock文件中,有两个请求的包:

  • 2.0.0 squizlabs/php\u codesniffer

以及phpmd/phpmd的四个依赖项:

  • 2.0.4 pdepend/pdepend

几天后,squizlabs/php_codesnifferversion2.1.0发布,但我还不想运行update。我现在想继续使用2.0.0版,也许几天后我会运行update

我现在想从我的项目中删除phpmd/phpmd。我想做到以下几点:

  1. composer.json

编辑:我更喜欢不需要改变composer.jsonsquizlabs/php_codesniffer的版本约束的解决方案

如果我跑步:

php composer.phar remove phpmd/phpmd

这实现了点1,2,3,6,但没有实现点4,5。

phpmd/phpmd的依赖项保留在composer.lockvendor文件夹中。

如果我跑步:

php composer.phar remove phpmd/phpmd
php composer.phar update

这达到了1, 2, 3, 4, 5点,但没有达到第6点。

squizlabs/php_codesniffer更新到版本2.1.0

共有3个答案

江奕
2023-03-14

要从. json和. lock文件中删除包,您必须按以下方式删除包:

composer remove package-name
梅玉堂
2023-03-14

这样做:

php composer.phar remove phpmd/phpmd

修改composer.json文件,使其包含以下require部分。

{
    "require": {
        "squizlabs/php_codesniffer": "2.0.*",
    }
}

现在运行composer.phar更新。这应该能让你到达你想去的地方。

注意:您还可以将php_codesniffer包固定到特定版本,例如2.0.0。有关composer如何进行版本控制的更多信息,请参见此处。

董良策
2023-03-14

composer.json中删除条目,然后运行composer update phpmd/phpmd

至于为什么这是有效的解决方案。我不知道,但这是什么需要完全删除一个包从composer.lock/供应商,并允许您安装一个新的/替换/冲突的包。

 类似资料:
  • 仅供参考,我正在使用ubuntu 14.04 当我需要一些新的软件包/扩展时,我使用作曲家要求命令来做作曲家添加。但是我注意到,有时它会从我的供应商和项目中删除一些现有的包。 我试着遵循命令。 还尝试了一些谷歌搜索。 http://www.yiiframework.com/wiki/672/install-specific-yii2-vendor-extension-dependency-with

  • 我想使用第三方供应商的jar。但是在这个jar中,我有Java包的旧版本我需要找到一些方法将包从主项目中排除。像这样的东西: 你能推荐一些解决方案吗?

  • 问题内容: 我想将表拖放到数据库中。但是,例如,当我使用时, 会收到以下消息: 我发现解决方案是删除所有数据库。但是,无论如何,如何在不完全删除数据的情况下解决此问题? 问题答案: 使用选项: 这将删除引用该表或使用该表的任何视图的任何外键。 它不会删除其他 表 (或从中删除行)。

  • 问题内容: 我遇到一个问题,其中同一类的多个版本显示在我的类路径中。有问题的班级是。我要使用的版本由引入。但是,我们还使用了Jira rest客户端库,该库依赖于较旧版本的jersey(),该版本包含捆绑在jar中的java.ws软件包。 这是构建文件中的示例片段: 我无法删除它,因为它使用了与新版本不同的软件包名称,并且会导致在Jira客户端中找不到类def的异常。 据我所知,目前我的选择是:

  • 一些stackoverflow帖子暗示我的类路径中有spring-asm的冲突版本。通过gradle依赖分析,我看到我没有spring-asm的多个版本,但我有spring-core的多个版本(版本3.1.4和5.0.2) 我试图排除3.1.4版本,但无法使其工作。我试图在依赖级别和配置级别都排除它。 即使有了上述更改,我仍然在依赖分析输出中发现Spring-Core:3.1.4.Release。

  • 我得到这个错误[React Hook useEffect缺少依赖项:'get data'。要么包括它,要么删除依赖项数组]请我解决这个问题...!