亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在用戶通過 Composer 安裝我的軟件包后運行腳本?

如何在用戶通過 Composer 安裝我的軟件包后運行腳本?

PHP
皈依舞 2022-08-19 10:49:16
我使用該命令安裝自己的框架。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-projectrequire


查看完整回答
反對 回復 2022-08-19
?
達令說

TA貢獻1821條經驗 獲得超6個贊

沒有人提到,這可以通過創建一個作曲家插件和定義事件處理程序來實現。


查看完整回答
反對 回復 2022-08-19
  • 2 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號