我创建了一个包。在bundle中,我在数据库中创建了两个表。这是我的composer.json。
{
"name": "xxxx/xxx-designer",
"description": "XXXX",
"license": "MIT",
"homepage": "https://github.com/giturl",
"autoload": {
"psr-0": {
"": "src/"
}
},
"authors": [
{
"name": "xxxx",
"email": "xxxx@gmail.com"
}
],
"minimum-stability": "dev",
"require": {
"php": ">=5.3.0",
},
"scripts": {
"post-install-cmd": [
"Acme\\Bundle\\DemoBundle\\Composer\\AcmeHandler::InstallTabs"
],
"post-update-cmd": [
"Acme\\Bundle\\DemoBundle\\Composer\\AcmeHandler::InstallTabs"
]
},
"extra": {
"branch-alias": {
"dev-master": "1.0.x-dev"
}
}
}
现在问题是当我执行php composer.phar update
然后编写器不执行post-update-cmd或post-install-cmd但是如果将以下行添加到main composer.json
"scripts": {
"post-install-cmd": [
"Acme\\Bundle\\DemoBundle\\Composer\\AcmeHandler::InstallTabs"
],
"post-update-cmd": [
"Acme\\Bundle\\DemoBundle\\Composer\\AcmeHandler::InstallTabs"
]
},
然后php composer.phar update
执行此命令,我的表将被创建我想知道为什么composer不从我的bundle的composer.json执行命令。请帮助为什么composer不从bundle的composer.json
答案 0 :(得分:1)
不幸的是,您不能使用供应商安装后/更新脚本。
<强> BUT 强>
了解如何在BraincraftedBootstrapBundle中解决它:
They have a separate command to copy the icons
我表明它可以添加到composer.json中。 BraincraftedBootstrapBundle -> Installing Glyphicons
答案 1 :(得分:1)
取自the docs
Note: Only scripts defined in the root package's composer.json are executed. If a dependency of the root package specifies its own scripts, Composer does not execute those additional scripts.