如果您的软件包尚未上传到packagist.org,则您必须定义本地composer存储库。里面Laravels'应用composer.json
添加本地存储库这样的:
"repositories": [
{
"type": "path",
"url": "/full/or/relative/path/to/development/my-package"
}
],
"require": {
"my-package": "*"
}
你必须定义包composer.json
内,而不是里面的Laravels包src
目录自己composer.json
。尝试并定义它像这里面包composer.json
:
"require" : {
"twbs/bootstrap": "dev-master",
"laravelcollective/html": "5.3.*"
},
"autoload" : {
"psr-4" : {
"PackageNamespace\\PackageClass\\" : "src/"
}
},
UPDATE
为了做适当包装的发展,你必须保持你的包文件比/vendor/
其他一些目录作曲家目录。主要的原因是,开发人员可以删除整个目录/vendor
如果有可能发生冲突的问题或清理和设置下作曲家/vendor
道路上的一切。我用一个很简单的方法,我保持我自己的包在:
<application>/dev/packages/<package-namespace>/<package-name>
你必须在你的包初始化一个git的作曲家承认库。为了使一个Git包,走在你的包的位置和运行以下命令:
cd <application>/dev/packages/<package-namespace>/<package-name>
git init
git add *
git commit -m "Initial commit"
您可能还设置git config user.name
和git config user.email
之前提交,为GIT中能够识别人,并允许本地承诺:
git config user.email "[email protected]"
git config user.name "Your Name"
在我的例子中,命名空间是lytr
和包名是testpkg
。
的<application>/dev/packages/<package-namespace>/<package-name>/composer.json
(<application>/dev/packages/lytr/testpkg
)看起来就像这样:
{
"name" : "lytr/testpkg",
"description" : "Test package of Lytr",
"keywords" : [
"test",
"package"
],
"license" : "MIT",
"require" : {
"twbs/bootstrap" : "dev-master",
"laravelcollective/html" : "5.3.*"
},
"autoload" : {
"psr-0" : {
"Lytr\\TestPkg\\" : "src"
}
},
"extra" : {
"branch-alias" : {
"dev-master" : "1.0-dev"
}
},
"minimum-stability" : "dev"
}
然后在您的应用程序<application>/composer.json
你就会有一个本地的Git仓库和你的包是这样的:
"repositories": [
{
"type": "path",
"url": "<full-application-path>/dev/packages/lytr/testpkg"
}
],
"require" : {
"lytr/testpkg": "*"
},
"minimum-stability": "dev",
我包括"minimum-stability": "dev",
因为我们使用的是master-dev
版本。然后运行命令composer update
仅具有"twbs/bootstrap" : "dev-master",
在封装要求之后,我们会看到在控制台窗口中下面的输出:
我们改变包装composer.json
并要求"laravelcollective/html" : "5.3.*",
后,我们做一个composer update
,我们看到作曲家正确安装laravelcollective/html
包:
我知道这可能看起来令人困惑,并且不知何故矫枉过正,但这是开发作曲家软件包的正确方法。你也可以将你的软件包放在git仓库中,并让作曲者克隆该仓库而不是你的本地文件。当你完成软件包的开发并将其发布到https://packagist.org/下时,那么你只需要将你的软件包作为任何其他普通软件包,而不需要存储库和所有本地git的东西。请记住,你处于包装的开发阶段,而不是生产阶段。
在这里打印'composer update'输出? –
另外,供应商文件夹的内容? –