我使用的是作曲家版本1.0-dev
我看了https://getcomposer.org/doc/faqs/how-do-i-install-a-package-to-a-custom-path-for-my-framework.md和https://github.com/composer/installershave
我在bitbucket中有一个自定义模块,使用这个简单的composer.json:
{
"name": "mybitbucketuser/base",
"type": "puppet-module",
"require": {
"composer/installers": "~1.0"
}
}
在我的主项目中,我有这个composer.json:
{
"minimum-stability": "stable",
"repositories": [
{
"type": "vcs",
"url": "https://bitbucket.org/mybitbucketuser/fluzu-base.git"
}
],
"require": {
"mybitbucketuser/base": "*"
},
"extra": {
"installer-paths": {
"modules/{$name}/": ["mybitbucketuser/base"]
}
}
}
我也试过这个:
"extra": {
"installer-paths": {
"modules/{$name}/": ["type:puppet-module"]
}
}
一切似乎都运行良好,但作曲家将模块安装在默认的供应商目录中,而不是模块目录。
什么错了?感谢。
顺便说一下,我使用的是puppet-module类型,但实际上是phalcon模块。
答案 0 :(得分:0)
我刚做了一个测试,但它确实有效。这是一个简单的示例,nrow(df[which(df$Counts<=100),])
是一个包,而hello-world
需要该包。
hello-world-test
/
hello-world/
src/
HelloWorld/
SayHello.php
composer.json
hello-world-test/
composer.json
<?php
namespace HelloWorld;
class SayHello
{
public static function world()
{
return 'Hello World, Composer!';
}
}
然后我跑了
{
"name": "me/hello-world",
"type": "puppet-module",
"require": {
"composer/installers": "~1.0"
},
"autoload": {
"psr-0": {
"HelloWorld": "src/"
}
}
}
注意:当
cd hello-world git init git add * git commit -m "Initial commit" git tag -a 1.0.0 -m "first stable version"
设置为稳定时,Composer需要此处的git存储库以及版本标记。如果我们将minimum-stability
设置为minimum-stability
,我们可以省略标记。
dev
然后我跑了
{
"minimum-stability": "stable",
"repositories": [
{
"type": "vcs",
"url": "../hello-world"
}
],
"require": {
"me/hello-world": "*"
}
}
Composer现在自动为cd hello-world-test
composer install
创建vendor
文件夹,为composer/installers
包创建modules
文件夹。由于我们的包中有"type": "puppet-module"
,因此创建了hello-world
文件夹。
答案 1 :(得分:-1)
Composer Packages Custom Installer plugin,这将满足您的需求。只需执行它并在src / Installer CPCInstaller下的config目录中添加指令即可为您完成所有操作。