2015-12-07 39 views
4

這是我.bowerrc不能使用管道字符在我.bowerrc腳本

{ 
    "directory": "vendor/assets/bower", 
    "scripts": { 
    "postinstall": "find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href=\"https?:\\/\\//href=\"\\/\\//g'" 
    } 
} 

這是假設與href="//取代的href="https://所有實例。我這樣做是爲了修復我的構建系統的一個錯誤。

我得到這個錯誤:

bower postinstall find ./vendor/assets/bower -name '*.html' -print0 | xargs -0 sed -i '' -E -e 's/href="https?:\/\//href="\/\//g' 
bower postinstall find: [object Object]: unknown primary or operator 
bower ECMDERR  Failed to execute "find ./vendor/assets/bower -name *.html -print0 [object Object] xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: [object Object]: unknown primary or operator 

Additional error details: 
find: [object Object]: unknown primary or operator 

爲什麼管道字符轉換爲[object Object]?我如何使命令運行?

我試圖在|前面添加一個轉義斜槓:

"postinstall": "find ./vendor/assets/bower -name '*.html' -print0 \\| xargs -0 sed -i '' -E -e 's/href=\"https?:\\/\\//href=\"\\/\\//g'" 

現在我越來越:

bower ECMDERR  Failed to execute "find ./vendor/assets/bower -name *.html -print0 | xargs -0 sed -i -E -e s/href="https?:\/\//href="\/\//g", exit code of #1 find: |: unknown primary or operator 

我在OSX 10.10.5

回答

0

我很確定鮑爾不會支持這個命令。看看this issue。它似乎只適用於像gulp postInstall這樣的小命令。原因似乎使一些assumptions about the command

我認爲一個修復方法是將它寫入bash腳本,然後運行這個bash腳本。所以保存爲'postInstall.sh'與可執行的perms,然後更改.bowerrc在postInstall 'postInstall: ./postInstall.sh'

+0

此外,我只是意識到,你可以把你的命令在一個sh -c「命令」,這將產生一個shell並運行它適合你。 – UtsavShah

相關問題