无法在我的 .bowerrc 脚本中使用管道字符

Can't use the pipe character in my .bowerrc scripts

这是我的 .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

我很确定 Bower 不会支持这个命令。看看 this issue. It seems to work only on smallish commands like gulp postInstall for example. The reason being seems to make some assumptions about the command.

我认为解决办法是将其写入 bash 脚本,然后 运行 这个 bash 脚本。所以将其保存为具有可执行权限的 'postInstall.sh',然后将 .bowerrc 更改为在 postInstall 'postInstall: ./postInstall.sh'