如何从供应商目录生成laravel composer.json?

Ami*_*ine 4 packages vendor laravel composer.json

在我的laravel项目中,composer.json和composer.lock文件被删除了,我不知道如何从现有的vendor目录重建composer.json文件.我需要一些帮助或至少一些可以帮助我解决这个问题的指导

aim*_*mme 8

注意

使用此方法的缺点是main composer.json文件将包含现有或子包或多个包所需的一些包.但不要担心它只会安装一次.但版本可能有问题.

忠告

我建议你使用像git这样的版本控制来克服这种情况.

不能保证我将要提出的以下方法,因为它不是一般的情况.但可能会奏效.

composer.json在项目根目录中创建这样的新文件.composer init如果你愿意,你可以使用命令.

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "require": {
        "php": ">=5.6.4",
        "laravel/framework": "5.3.*"
    },
    "require-dev": {
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "5.6",
        "symfony/css-selector": "3.1.*",
        "symfony/dom-crawler": "3.1.*"
    },
    "autoload": {
        "classmap": [
            "database"
        ],
        "psr-4": {
            "Blog\\": "app/"
        }
    },
    "autoload-dev": {
        "classmap": [
            "tests/TestCase.php"
        ]
    },
    "scripts": {
        "post-root-package-install": [
            "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "php artisan key:generate"
        ],
        "post-install-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postInstall",
            "php artisan optimize"
        ],
        "post-update-cmd": [
            "Illuminate\\Foundation\\ComposerScripts::postUpdate",
            "php artisan optimize"
        ]
    },
    "config": {
        "preferred-install": "dist"
    }
}
Run Code Online (Sandbox Code Playgroud)
  • 转到vendor文件夹中的每个包文件夹,找到包的composer.json文件.从该文件中找到该"name"composer.json文件中的那个包.
  • 将该包的名称添加到主composer.json文件的"require"部分.如果要将该包添加到开发中,请将其添加到"require-dev"部分.

  • composer install 要么 composer update

  • composer dump-autoload

  • 就在我开始使用 Git 之前,我的一个遗留项目就发生了这种情况。很好的建议。我另外做的是在添加每个供应商/子文件夹/composer.json 中的所有“名称”之后,我按 Ctrl+Shift+F 在供应商文件夹中搜索每个名称(包括双引号)。然后,如果我发现它列在另一个包的“require”下(忽略“installed.json”),而不仅仅是“name”下,我将其删除。在“composer update”之前进行了备份,一切顺利。 (2认同)