首页 > 解决方案 > 当包需要 ^1.0 时如何在项目根目录中使用 @dev

问题描述

在我的开发项目composer.json中,我有:

"require": {
    "bastinald/laravel-automatic-migrations": "@dev",
    "bastinald/laravel-bootstrap-forms": "@dev",
    "bastinald/laravel-livewire-routes": "@dev",
    "bastinald/livewire-bootstrap-auth": "@dev"
},

它们都作为存储库从文件系统添加并符号链接,因此我可以在这个项目中处理它们。我使用这个项目来开发我自己的所有包。

在我的一个项目(bastinald/livewire-bootstrap-auth)中,我有这个composer.json

"require": {
    "bastinald/laravel-automatic-migrations": "^1.0",
    "bastinald/laravel-bootstrap-forms": "^1.0",
    "bastinald/laravel-livewire-routes": "^1.0",
},

这导致以下错误:

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

    Problem 1
    - Root composer.json requires bastinald/livewire-bootstrap-auth dev-master -> satisfiable by bastinald/livewire-bootstrap-auth[dev-master].
    - bastinald/livewire-bootstrap-auth dev-master requires bastinald/laravel-automatic-migrations ^1.0 -> satisfiable by bastinald/laravel-automatic-migrations[1.0.0, 1.0.1, 1.0.2, 1.0.3] from composer repo (https://repo.packagist.org) but bastinald/laravel-automatic-migrations[dev-master] from path repo (packages/bastinald/laravel-automatic-migrations) has higher repository priority. The packages with higher priority do not match your constraint and are therefore not installable. See https://getcomposer.org/repoprio for details and assistance.

我需要保留^1.0在我的包 json 文件中以备发布时使用。如何使我仍然可以@dev用于我的开发项目中的所有包,同时在包 composer.json 文件中使用已发布的版本?另外,我想确保其他包使用的包@dev在开发项目中使用。

这可能吗?或者我应该像以前一样在发布版本之前将版本从@dev回切换到^1.0之前?

标签: phpcomposer-php

解决方案


dev-master as 1.0用作版本,例如在您的情况下:

"require": {
    "bastinald/laravel-automatic-migrations": "dev-master as 1.0",
    "bastinald/laravel-bootstrap-forms": "dev-master as 1.0",
    "bastinald/laravel-livewire-routes": "dev-master as 1.0",
    "bastinald/livewire-bootstrap-auth": "dev-master as 1.0"
},

推荐阅读