这是我的 .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="https://
替换 href="//
的所有实例。我这样做是为了修复我的构建系统的错误。我收到此错误:
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
最佳答案
我很确定 Bower 不会支持这个命令。看看 this issue 。例如,它似乎只适用于像 gulp postInstall
这样的小命令。原因似乎有一些 assumptions about the command 。
我认为解决方法是将其写入 bash 脚本,然后运行此 bash 脚本。因此,将其保存为带有可执行权限的 'postInstall.sh'
,然后将 .bowerrc 更改为 postInstall 'postInstall: ./postInstall.sh'
关于macos - 无法在我的 .bowerrc 脚本中使用管道字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34144149/