Jim*_*mix 5 php uninstallation composer-php
我有一个包含该composer.lock文件的项目。我使用以下命令安装了软件包:
composer install
Run Code Online (Sandbox Code Playgroud)
现在我想将该composer install命令回滚到运行之前的状态。
如何删除所有包而不影响composer.lock文件?有没有一个composer命令可以做到这一点?
我试过:
composer remove *
Run Code Online (Sandbox Code Playgroud)
但我得到了:
[UnexpectedValueException]
“LICENSE”不是有效的别名。
我试过:
composer remove */*
Run Code Online (Sandbox Code Playgroud)
但后来我得到了一堆像这样的打印:
bin/console 在您的composer.json 中不是必需的,并且尚未被删除
列出的更新包“bin/console”未锁定。
为什么composer remove *根本不起作用?AFAIK 包名称VendorName/PackageName是 Packagist 的常见约定,但不是必须的(如果您使用私有存储库),那么如何能够IdontHaveAnySlash一次删除所有名为等的包呢?
我可能会使用类似的东西:
for package in $(composer show | awk '{print $1}'); do composer remove --no-interaction --dev --no-install "$package"; done
Run Code Online (Sandbox Code Playgroud)
但这不是一个简单的单一composer命令。此外,作曲家经常抱怨一个包是另一个包的一部分(依赖项),因此composer不会卸载它。
删除失败,学说/注释仍然存在,另一个包可能需要它。看
composer why doctrine/annotations。
因为我的目的是回滚到没有安装任何包而只安装文件的状态:composer.lock而且composer.json我可能真的不关心任何依赖项、包版本、下载存储库的 URL 等。
我只想拥有一个像以前一样没有安装任何依赖项的项目。
有没有一个composer命令可以做到这一点?
我的:
composer --version
Run Code Online (Sandbox Code Playgroud)
是:
版本 2.2.7 2022-02-25 11:12:27
根据 yivi 的回答,我创建了一个简单的测试来验证:
composer install
Run Code Online (Sandbox Code Playgroud)
输出:
作曲家.json: 好的
作曲家.lock: 好的
所以两者composer.json都composer.lock不受影响composer install所以实现回滚(卸载)的唯一一件事composer install就是删除vendor目录
rm -rf vendor
Run Code Online (Sandbox Code Playgroud)
然而正如 yivi 提到的:
如果其他一些插件(例如 Symfony Flex)在此过程中对您现有的文件进行了更改,您最好将项目置于版本控制系统之上,在这种情况下,恢复由 VCS 管理,而不是由 Composer 管理。
我没有针对这种情况进行测试。
rm -rf vendor
Run Code Online (Sandbox Code Playgroud)
在任何情况下,install都不应该对锁定文件进行任何更改install,因此除了删除已安装的文件之外,不应该有任何内容可以“恢复” 。
如果锁文件最初不存在,则会创建它。
如果其他一些插件(例如 Symfony Flex)在此过程中对您现有的文件进行了更改,您最好将项目置于版本控制系统之上,在这种情况下,恢复由 VCS 管理,而不是由 Composer 管理。
因为我的目的是回滚到未安装任何软件包而仅安装文件的状态:composer.lock 和可能的composer.json
为了能够跑步 composer install,你至少需要composer.json存在。install从锁文件 ( composer.lock) 读取,但要求 JSON 配置文件也存在。如果锁文件不存在,update将改为运行并创建锁文件。
我试过
composer remove
remove与 是相反的require。它从 中删除包composer.json,并require添加它们。不是相反的install。没有安装的反义词,因为它没有太多概念意义。如果需要删除已安装的项目...总是可以这样做。
| 归档时间: |
|
| 查看次数: |
14380 次 |
| 最近记录: |