我使用该命令composer require otra/otra:dev-develop --no-update --no-cache && composer update --no-autoloader
来安装我自己的框架。
我从我的框架中把这部分放在了composer.json
我的框架中:
"scripts": {
"pre-install-cmd": "@composer config bin-dir bin/"
}
但是 Composer 不运行它。这是正常的吗,Composer 是否认为这是一个依赖项而不是根包,所以它不允许我的脚本运行?
如果是这种情况,我怎么能有同样的行为?
我想要 :
- 将我的二进制文件放在
bin
文件夹中,vendor/bin
不必要求用户手动执行符号链接(或其他解决方案) - 将一个文件夹从我的框架复制
web
到项目的根目录。
编辑:使用create-project
命令
如果我输入composer create-project otra/otra:dev-develop crashtest --remove-vcs
,我得到这个composer.json
:
{
"name": "otra/otra",
"type": "library",
"description": "The OTRA PHP framework",
"keywords": ["framework"],
"homepage": "https://github.com/lperamo/otra",
"license": "X11",
"authors": [
{
"name": "Lionel Péramo",
"email": "contact@lionel-peramo.com",
"homepage": "https://wexample.com"
}
],
"bin" : ["otra.php"],
"config": {
"bin-dir" : "bin/",
"sort-packages": true
},
"require": {
"ext-mbstring": "*",
"php": ">=7.4.0",
"symfony/yaml": "^4.0"
},
"require-dev": {
"ext-pdo": "*",
"ext-pdo_mysql": "*"
},
"scripts": {
"pre-install-cmd": "@composer config bin-dir bin/"
}
}
这与我的框架完全相同,因此我无法通过 Composer 对其进行更新。如果我不使用,我可以使用 git,--remove-vcs
但这不是目标。
命令的输出composer
是:
安装 otra/otra (dev-develop ab37237565155dab11812a7b2982d30ee240f051)
- 安装 otra/otra (dev-develop ab37237):从缓存中克隆 ab37237565
在 crashtest 中创建项目
使用包信息加载作曲家存储库
从锁定文件安装依赖项(包括 require-dev)