2016-09-09 34 views
3

我在這裏面臨一個小問題。我試圖使用作曲家的腳本來綁定我的PHP項目。到目前爲止,我所做的是有一個作曲家文件,並在其中輸入一些腳本。我的作曲文件的片段看起來是這樣的:作曲家Windows兼容腳本

"scripts": { 
    "document": "vendor/bin/apigen generate -s ./src -d ./docs", 
    "codecept": "vendor/bin/codecept", 
    "test": "vendor/bin/codecept run", 
    "lint": "vendor/bin/phpcs --standard=PSR2 src", 
    "bootstrap": "composer install && composer codecept bootstrap" 
} 

我已經定義的依賴和它完美的作品在POSIX兼容的機器(基於MAC/Linux操作系統),但如果誰在使用的窗口有人想使用任何的腳本,它根本不起作用。

問題我面對的是,我得到/作爲目錄分隔符,但Windows可以理解\我認爲windows已經足夠聰明,可以自動轉換它。

骯髒的解決方案,我在想的是有windows-lint命令,這真的很煩人。我只想知道其他人在想要在多個操作系統上工作時正在做什麼。

在此先感謝!

+0

有趣的問題,一個可能希望與Windows兼容的東西沒有看到與他自己的眼睛結果的方式。 – dotpush

回答

2

只是使用腳本,而無需指定vendor/bin路徑,它將被作曲家自動完成,請注意部分https://getcomposer.org/doc/articles/scripts.md#writing-custom-commands

"scripts": { 
    "document": "apigen generate -s ./src -d ./docs", 
    "codecept": "codecept", 
    "test": "codecept run", 
    "lint": "phpcs --standard=PSR2 src", 
    "bootstrap": "composer install && composer codecept bootstrap" 
} 
2

我在想同一個問題,可能有多種解決方案。

選項1,沒有shell腳本,純PHP只

shell腳本解釋器的平臺之間的區別,這是相當難以實現所謂的「通用」就好了。

但是,您可能只使用純PHP。作曲家文件this quite well。您的PHP應該能夠輕鬆地適應Windows案例或POSIX案例。

但是,您可能不喜歡在PHP中封裝外部程序調用和shell命令。

選項2,運行在Linux VM

腳本你會例如推出由Vagrant文件中定義了Linux虛擬機,然後運行作曲家藥谷「無業遊民SSH」。

優點:

  • 爲大家

  • 定義正確顛沛流離的環境,可以通過開發人員簡化了很多本地測試,除去衆所周知的「這個作品在我的機器上」相同的外殼。每個開發者都擁有「相同」的本地環境。

缺點:

  • 一些初始設置(包括具有相應權限的項目文件夾中的兩方同步),很多在線的例子可能會有幫助。

  • 在本地運行VM需要足夠的RAM。

選項3,在Windows上使用

另一個shell比CMD不要使用標準的shell啓動作曲家。有很多其他選擇,包括:

  • Cygwin的(我不會使用它,如果我可以但是要避免)

  • 混帳慶典(像MINGW32可方便地與客戶端的git安裝使用Git是不是強制性的)

0

我創建了一個composer包,它將斜槓轉換爲反斜槓,如果在Windows操作系統上執行的話。

在你composer.json你只需要添加:

{ 
    "require": { 
    "instituteweb/composer-scripts": "^1.0", 
    }, 
    "scripts": { 
    "test": [ 
     "\\InstituteWeb\\ComposerScripts\\ImprovedScriptExecution::apply", 
     "vendor/bin/whatever" 
    ] 
    } 
} 

所以,當你執行composer run test,它會在Unix和Windows操作系統的工作。

工作原理:

腳本排隊申請方法,停止原來的「測試」命令的傳播。相反,它創建並執行一個名爲「_test」的新命令(prepends下劃線),其中包含原始命令,只是轉換後的斜線。

就命令申請方法調用受到影響。

鏈接到包:https://packagist.org/packages/instituteweb/composer-scripts