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

10-09 18:33