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

Posted

技术标签:

【中文标题】如何从供应商目录生成 laravel composer.json?【英文标题】:How to generate laravel composer.json from a vendor directory? [duplicate] 【发布时间】:2017-05-02 05:04:52 【问题描述】:

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

【问题讨论】:

【参考方案1】:

注意

使用此方法的缺点是主 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"
    

转到供应商文件夹中的每个包文件夹并找到包的composer.json文件。从那个文件中找到那个 composer.json 文件中那个包的"name"

将该包的名称添加到 ma​​in composer.json 文件的 "require" 部分。如果您想将该包添加到开发中,请将其添加到“require-dev”部分。

composer installcomposer update

composer dump-autoload

【讨论】:

在我开始启动 Git 之前,我遇到了一个遗留项目。很好的建议。我另外做的是在从每个供应商/子文件夹/composer.json 添加所有"name"s 之后,我 Ctrl+Shift+F 在供应商文件夹中搜索每个名称,包括双引号。然后,如果我发现它列在另一个包的"require" 下(忽略installed.json),而不仅仅是"name",我将其删除。在composer update之前备份过,很顺利。

以上是关于如何从供应商目录生成 laravel composer.json?的主要内容,如果未能解决你的问题,请参考以下文章

laravel IDE 代码提示

Laravel 与查询生成器的关系出错

laravel实践记录

如何防止 Laravel 应用程序文件夹被搜索引擎索引

我应该将 Laravel 供应商目录添加到 .gitignore 吗?

运行一个简单的 Laravel 应用程序时,我需要大的供应商目录吗?