Php 编写器包创建问题

Php 编写器包创建问题,php,composer-php,Php,Composer Php,从现有项目创建composer包时遇到问题。 目前我有一个名为auth的项目。其中有src文件夹,然后是Authentication文件夹(文件的名称空间)。我在这个Authentication文件夹中保存了我的代码 现在,我在根目录中创建了composer.json文件。最后的结构如下 认证(项目根目录)/ src/ 认证/ PHP文件 composer.json 我的composer.json是 { "name": "bikasv/auth", "license"

从现有项目创建composer包时遇到问题。 目前我有一个名为
auth
的项目。其中有
src
文件夹,然后是
Authentication
文件夹(文件的名称空间)。我在这个
Authentication
文件夹中保存了我的代码

现在,我在根目录中创建了
composer.json
文件。最后的结构如下

  • 认证(项目根目录)/
    • src/
      • 认证/
      • PHP文件
  • composer.json
我的composer.json是

{
    "name": "bikasv/auth",
    "license": "MIT",
    "authors": [
        {
            "name": "Bikas Vaibhav",
            "email": "******@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "require": {
        "php": ">=5.3.0"
    },
    "autoload": {
        "psr-0": {
            "Authentication": "src"
        }
    }
}
当我尝试安装
composer
时,它显示
无需安装或更新

我是不是遗漏了什么

更新:我想让这个项目成为一个composer包,以便其他人可以使用composer安装它。这个包本身没有依赖性

我尝试使用PackageGist和Github(虽然现在已经从这两个地方删除了),但是当我尝试使用composer安装它时,没有安装任何东西

更新2:我已为此项目创建了PackageGist。你可以看看这里


这对我来说并非始终如一,是的,它是我之前错误发布的正确的composer.json。

如果您希望此项目成为另一个项目的依赖项,那么最简单的方法就是将其上载到PackageGist并要求它。必须从新项目中执行“requirement”,然后“auth”项目应显示在vendor/bakasv目录中。新项目中的composer.json应该与下面的示例类似,我在编辑后对其进行了修改

{
    "name": "bikasv/someotherproject",
    "license": "MIT",
    "authors": [
        {
            "name": "Bikas Vaibhav",
            "email": "******@gmail.com"
        }
    ],
    "minimum-stability": "dev",
    "autoload": {
        "psr-0": {
            "Someotherproject\\Namespace": "src/"
        }
    }
    }

在您的情况下,
require
部分中没有依赖项,所以composer只生成自动加载文件。当您将一些库放到require部分时,composer将尝试安装它

我是不是遗漏了什么

是的,你们错过了作曲家的作品

当您运行
composer install
命令时,composer不会将您的文件从“src”移动到“vendor”,它只是简单地安装您在composer.json中“vendor”目录中“require”下列出的依赖项。由于您发布的composer.json文件中没有任何依赖项,因此无需安装任何内容

我想要的是使这个项目成为一个composer包,以便其他人可以使用composer安装它

将项目推送到github,然后使用github存储库URL将其添加到。要测试其他人是否可以使用您的库,请使用composer.json文件创建一个新的本地目录,并在此新的composer.json文件中的“require”下,将您的库添加为依赖项:

"require": {
    "bikasv/auth": "*"
}
然后运行
composer安装
。安装过程完成时,库应位于“供应商”目录下

如果这样做有效,下一步就是了解,因为您应该标记库的频率,以便其他开发人员可以使用库的特定版本,而不是要求“*”或“dev developer”

通过阅读文档,您可以更加熟悉composer

更新:

关于您的更新#2

从添加到PackageGist的包中,从composer.json中删除以下行:
“bikas/auth”:“*”
(这意味着您的库本身已作为依赖项列出)

将更改后的composer.json推送到github后,按如下方式进行测试:

$mkdir-p~/.tmp/test;cd$&&composer需要bikas/auth dev master


composer应该开始安装您的库。

我对该项目没有外部依赖关系,因此不需要。但我不应该把我的文件复制到供应商文件夹吗?什么文件?您尚未声明要复制到供应商文件夹的任何内容。我想我的问题不是很清楚。请允许我编辑这个问题,对于由此带来的不便,我深表歉意。我已经在require字段中找到了代码bikasv/auth,但这段代码中不知何故丢失了它。我已将代码再次上载到PackageGist我试图安装您的项目,但失败了,因为您有以下行
“name”:“bikasv/someotherproject”
而不是
“name”:“bikasv/auth”
。请参阅我的最新答案。你意识到你的实际问题与你最初提出的问题大不相同吗?是的,对此我感到非常抱歉。这是我真正的问题,但第一次没能正确地表达出来。请看这里以正确地遵循目录结构-仅仅因为我漏了一行,直接的意思是你很粗鲁,先生。我知道它是如何工作的,我遗漏了一些东西,因为我已经为我的公司托管了很多软件包。不管怎么说,你的回答目前除了严厉之外毫无用处。@BikasVaibhav,这不是你的本意。如果你觉得我的帖子很粗鲁,我很抱歉。在最初的回复中查看我的更新。我会在我的电脑上尝试一下。以后会更新删除实际有效的行。另外,我使用*而不是
devmaster
。现在可以用了,谢谢。