如何在自定义路径中使用Composer安装软件包或模块?

3
我尝试使用composer在特定路径下安装Drupal模块,
我查看了这些链接,但是我无法弄清楚。
请检查一下,告诉我哪里出错了,我该怎么做?
我想要什么?
在“modules/patched”目录中安装Signature field模块。
这是我的composer.json文件中与此问题相关的部分。
"require": {
    "composer/installers": "^1.0.24",
    "drupal/signature_field": "^1.0@RC",
},

    "installer-paths": {
        "core": ["type:drupal-core"],
        "modules/contrib/{$name}": ["type:drupal-module"],
        "profiles/contrib/{$name}": ["type:drupal-profile"],
        "themes/contrib/{$name}": ["type:drupal-theme"],
        "drush/contrib/{$name}": ["type:drupal-drush"],
        "modules/custom/{$name}": ["type:drupal-custom-module"],
        "themes/custom/{$name}": ["type:drupal-custom-theme"],
        "modules/patched/{$name}": ["type:drupal-patched-module"]
    },
    "patches": {
        "drupal/signature_field": {
            "Drupal Signature Field fix multi feilds": "modules/patched/signature_field/signature_field-2993223-08.patch"     
        }
    }
},

最后我执行了composer installcomposer update,但是这个模块并没有移到我想要的文件夹中。

2个回答

1
也许这可以帮助你(关于extra的说明):
{
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"],
            "modules/patched/{$name}": ["another/package"]
        }
    }
}

参考文献, GitHub评论

可能,这会起作用:

{
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"]
        }
    },
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/another_module"]
        }
    }
}

或者

{
    "extra": {
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/signature_field"]
        },
        "installer-paths": {
            "modules/patched/{$name}": ["drupal/another_module"]
        }
    }
}

此外,

您不能使用此方法更改任何软件包的路径。这仅适用于需要composer/installers并使用其处理的自定义类型的软件包。

您还可以通过type group 您的软件包:

{
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["type:wordpress-plugin"]
        }
    }
}

对于某些供应商
{
    "extra": {
        "installer-paths": {
            "your/custom/path/{$name}/": ["vendor:drupal"]
        }
    }
}

它可以工作,但如果我有几个模块都有这种情况,我该如何添加? - Nasser Ali Karimi
1
你的意思是,你想将多个模块添加到同一路径下? - Tarasovych
为每个包添加一个额外的可能是错误的,也许有100个包它至少应该添加200行额外的代码。 - Nasser Ali Karimi
这是一个数组吗?["drupal/signature_field"] 那么如果要扩大它呢? - Nasser Ali Karimi
你可以看一下我提到的文档。我无法确定它是否有效,因为我没有你的环境。 - Tarasovych
显示剩余4条评论

1

在这里,我们应该定义自定义路径,并定义哪个模块或包应安装在该路径中。

就像这样

"installer-paths": {

    // custom path with the list of items that should installed there.

    "modules/patched/{$name}": [
        "drupal/signature_field",
        "drupal/eck",
        "drupal/auto_entitylabel"
    ],
}

这个包或模块也应该在你的require部分中。

"require": {
        "composer/installers": "^1.0.24",
        "drupal/auto_entitylabel": "2.x-dev",
        "drupal/signature_field": "^1.0@RC",
        "drupal/eck": "^1.0@alpha",
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接