是否可以在抑制软件包卸载的同时运行composer安装(Drupal8)



我使用的是Drupal-8,当使用composer需要一个包并使用Drupal安装时,它需要以下工作流程,但随后从Drupal卸载并由另一个开发人员通过composer删除:

  1. 更新本地存储库
  2. 运行composer以在composer.json中安装或更新(并且仅安装/更新(程序包
  3. 在我的CMS中运行脚本来处理软件包安装/卸载的详细信息(取决于软件包的存在(
  4. 运行composer卸载从composer.json中删除的所有程序包

步骤4可能只是composer install,但我想知道是否有某种方法可以抑制步骤2中的包卸载?此外,Drupal-8无法完成步骤3,因为删除的composer包中嵌入了Drupal卸载指令。

安装和更新选项就在这里。

不,没有任何选项可以运行这两个命令,并且只完成其一半的工作。删除不必要的依赖关系是composer工作的一部分。

如果你想要这种行为,你必须自己编码。

我已经用Drupal对此进行了标记,因为它可能不属于其他系统。

我目前的解决方案是在composer安装后运行的脚本中捕获删除内容,该脚本将重新安装已删除的模块。稍后git checkout恢复composer.*的状态,然后composer install再次运行。所以顺序是:

  1. 更新本地存储库
  2. 运行composer install并过滤输出以删除ANSI代码,并拉出以"-Removeing"开头的行和以"Delete"开头的列,然后在名为composer.reinstall.sh的脚本中将它们重新格式化为composer require命令:
composer install | tee >(perl -pe 's/e[[0-9;]*m//g'|grep -B1 "^Deleting"|grep "^  - Removing"| perl -pe 's/^  - Removing ([^ ]+) (([^)]+))/composer require 1:2/g' > composer.reinstall.sh)
  1. 运行生成的脚本:sh composer.reinstall.sh
  2. 在我的CMS(drush cimdrush updbBTW(中运行脚本来处理包安装/卸载的详细信息(取决于包的存在(
  3. 重新初始化composer文件:rm composer.reinstall.sh; git checkout composer.*
  4. 运行composer install卸载从composer.json中删除的所有程序包

最新更新