【问题标题】:Laravel use package in own projectLaravel 在自己的项目中使用包
【发布时间】:2017-09-23 02:40:51
【问题描述】:

我正在Laravel 5.5 中构建一个包。现在我想使用那个包 在我自己的项目中本地。

我的包中的 composer.json 如下所示:

{
    "name": "larsjanssen6/underconstruction",
    "license": "MIT",
    "homepage": "https://github.com/larsjanssen6/underconstruction",
    "authors": [
        {
            "name": "Lars Janssen",
            "email": "larsjanssen64@gmail.com",
            "role": "Developer"
        }
    ],
    "require": {
        "php" : "^7.0",
        "illuminate/support": "~5.5.0"
    },
    "autoload": {
        "psr-4": {
            "LarsJanssen\\underconstruction\\": "src/"
        }
    },
    "minimum-stability": "dev",
    "prefer-stable": true,
    "extra": {
        "laravel": {
            "providers": [
                "LarsJanssen\\underconstruction\\UnderConstructionServiceProvider"
            ]
        }
    }
}

(https://github.com/larsjanssen6/underconstruction)

在一个新的 laravel 项目中,我在 composer.json 文件中添加了这样的包:

{
    "name": "laravel/laravel",
    "description": "The Laravel Framework.",
    "keywords": ["framework", "laravel"],
    "license": "MIT",
    "type": "project",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/larsjanssen6/underconstruction"
        }
    ],
    "require": {
        "php": ">=7.0.0",
        "fideloper/proxy": "~3.3",
        "laravel/framework": "5.5.*",
        "laravel/tinker": "~1.0",
        "larsjanssen6/underconstruction": "master"
    },
    "require-dev": {
        "filp/whoops": "~2.0",
        "fzaninotto/faker": "~1.4",
        "mockery/mockery": "0.9.*",
        "phpunit/phpunit": "~6.0"
    },
    "autoload": {
        "classmap": [
            "database/seeds",
            "database/factories"
        ],
        "psr-4": {
            "App\\": "app/"
        }
    },
    "autoload-dev": {
        "psr-4": {
            "Tests\\": "tests/"
        }
    },
    "extra": {
        "laravel": {
            "dont-discover": [
            ]
        }
    },
    "scripts": {
        "post-root-package-install": [
            "@php -r \"file_exists('.env') || copy('.env.example', '.env');\""
        ],
        "post-create-project-cmd": [
            "@php artisan key:generate"
        ],
        "post-autoload-dump": [
            "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump",
            "@php artisan package:discover"
        ]
    },
    "config": {
        "preferred-install": "dist",
        "sort-packages": true,
        "optimize-autoloader": true
    }
}

但我收到此错误:

Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - The requested package larsjanssen6/underconstruction could not be found in any version, there may be a typo in the package name.

这里有什么问题?

【问题讨论】:

  • 你在哪里发布了你的包?吉特?您是否配置了一些包存储库,例如 packagegist?我找不到它。
  • 是的,它在 git 上:github.com/larsjanssen6/underconstruction。在我帖子的第二个代码块中,您可以看到我已经配置了 repositories
  • 你需要使用dev-master(总是以dev-为前缀,如果你想要一个分支而不是标签或者在GitHub的行话版本中)。
  • 嗯...对不起。我从来没有使用存储库条目为我的项目设置必要的包。你运行composer update 命令了吗?

标签: php laravel composer-php


【解决方案1】:

从评论部分移动答案。

您需要dev-master 才能获得master's branch code

如果你有某种其他分支,比如second-branch,你可以在 composer.json 文件中使用dev-second-branch

...
"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/larsjanssen6/underconstruction"
    }
],
"require": {
    ...
    "larsjanssen6/underconstruction": "dev-master"
},
...

【讨论】:

    猜你喜欢
    • 2019-12-06
    • 1970-01-01
    • 2012-04-16
    • 2019-08-07
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多