当依赖项的composer.json被更改时,强制composer重新生成自动加载?

时间:2015-09-05 11:43:44

标签: composer-php

我开发Symfony软件包的工作流程如下:

  • 安装Symfony
  • 为新包创建一个git repo,在其中放置一个composer.json文件
  • 使用@dev版本
  • 在顶级composer.json中要求新包
  • composer update newpackage =>使用git clone
  • 下载软件包
  • 处理供应商内部的git clone,提交并推送它

这一切都很好,花花公子,但似乎在一个特定情况下突破: 如果我改变已经安装的软件包的'autoload'标签,似乎Composer很难将其考虑在内:

  • 我尝试了'composer dumpautoload',它什么都没做
  • 我不想删除composer.lock文件,因为我不希望其他软件包更新到更新的版本,我只想更改那个软件包的自动加载配置
  • 我尝试手动删除vendor / composer / installed.json,发生的事情是Composer重新下载了所有供应商并擦除了那时碰巧在那里的任何数据

当我在一个单独的克隆上更改了包的自动加载部分时,同样的问题就出现了,将更改推送到git并运行'composer update mypackage' - 尽管这可能与packagist没有收到ping的关联github上。

我当然可以手动更改composer.lock和vendor / composer / installed.json文件,但这看起来太乱了。它也没有保证第一次下载包的用户会看到它正常工作。

3 个答案:

答案 0 :(得分:3)

dumpautoload使用vendor/composer/installed.json中的包信息,而不是单个composer.json文件。您也需要在那里更改自动加载信息。

答案 1 :(得分:0)

尝试:

Account* Bank::createAccount(string accountType,int iban,int ownerid,double amount)
{
    std::unique_ptr<Account> toAddAccount;
    if(accountType=="CurrentAccount")
    {
        toAddAccount=new CurrentAccount(iban,ownerid,amount);
    }

    // presumably more code

    return toAddAccount.release(); // your factories shouldn't care where your accounts are stored.
}

它读取了composer.json文件并重新编写了拾取新路径的所有自动加载文件。

答案 2 :(得分:0)

仅当您运行

时才会更新install.json文件。
from PIL import Image
import numpy as np
import picamera
import time
import RPi.GPIO 
from guizero import ...

def processimage():
    before = Image.open('before.jpg')
    after = Image.open('after.jpg')

    beforeRGB = np.array(before)
    afterRGB = np.array(after)

    outputRGB = Image.new('RGB', (800,480))

    x=0
    y=0
    for x in range(800):
        for y in range(480):
            if(((beforeRGB[x,y,0])/afterRGB[x,y,0])<0.9):
                outputRGB[x,y,0] = afterRGB[x,y,0]
            else:
                output[x,y,0] = 255

            if(((beforeRGB[x,y,1])/afterRGB[x,y,1])<0.9):
                outputRGB[x,y,1] = afterRGB[x,y,1]
            else:
                output[x,y,1] = 255

            if(((beforeRGB[x,y,2])/afterRGB[x,y,2])<0.9):
                outputRGB[x,y,2] = afterRGB[x,y,2]
            else:
                output[x,y,2] = 255


            y=y+1
         x=x+1

    Image.fromarray(outputRGB).save('output.jpg')