我使用該命令安裝自己的框架。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 是否將其視為依賴項而不是根包,因此它不允許我的腳本運行?如果是這種情況,我怎么能有相同的行為呢?我想:將我的二進制文件放在文件夾中,不必要求用戶手動執行符號鏈接(或其他解決方案)binvendor/bin將文件夾從我的框架復制到項目的根目錄。web編輯 :使用創建項目命令如果我輸入,我得到這個:composer create-project otra/otra:dev-develop crashtest --remove-vcscomposer.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": "[email protected]", "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在崩潰測試中創建的項目加載包含包信息的作曲家存儲庫從鎖定文件安裝依賴項(包括 require-dev)
2 回答

慕俠2389804
TA貢獻1719條經驗 獲得超6個贊
僅執行在項目的正確文件中定義的腳本。composer.json
來自必需和已安裝軟件包的腳本永遠不會執行,因為這將帶來可怕的安全風險。
這在文檔中進行了簡要說明:
僅執行根包的 composer.json 中定義的腳本。如果根包的依賴項指定了自己的腳本,則 Composer 不會執行這些其他腳本。
如果包用戶需要執行其他步驟才能使用包或庫,請在包文檔中解釋這些步驟,并提供他們可以手動執行的腳本,并將為他們執行這些步驟。
如果你的包是一個“框架”,而不是一個庫,你可以做的就是利用作曲家命令。create-project
這將要求您設置具有項目默認結構的存儲庫,這反過來又取決于您的包。
例如,這就是Symfony的Skeleton的方式。
使用這種設置,您可以創建自定義安裝腳本并使用 激活它們,并使用類似的東西執行一些額外的設置步驟,甚至是交互式設置步驟。(文檔post-create-project-cmd
)
請注意,此腳本僅在 使用 安裝包時運行,而在使用 時永遠不會運行。create-project
require
- 2 回答
- 0 關注
- 140 瀏覽
添加回答
舉報
0/150
提交
取消