如何在npm脚本中以跨平台兼容的方式使用〜(home dir)?

时间:2017-08-01 19:01:47

标签: node.js windows bash npm git-bash

我正在尝试将~/.aws复制到我的泊坞窗容器中。但是我在运行git-bash的Windows机器上,这似乎导致了一些问题。

到目前为止我尝试了两件事:

"d-aws-copy": "docker cp ~/.aws constraint-listener:/usr/src/app"

结果:GetFileAttributesEx C:\work\project-name\~: The system cannot find the file specified.

"d-aws-copy": "docker cp /c/Users/user-name-here/.aws constraint-listener:/usr/src/app",

结果:GetFileAttributesEx C:\c: The system cannot find the file specified.

我看到的涉及代字号扩展的所有解决方案都是针对节点代码的,而不是针对命令行npm脚本。

如果我从bash运行docker cp ~/.aws constraint-listener:/usr/src/app它可以正常工作。但是在一个npm脚本里面它崩溃了,如上所示。

如何让~在Windows机器上的npm脚本中工作?

2 个答案:

答案 0 :(得分:0)

解决方案是直接致电bash

"d-copy-aws": "bash -c \"docker cp ~/.aws constraint-listener:/root\" && echo aws credentials copied",

答案 1 :(得分:0)

从Node调用时,您使用的是标准shell,可能是Windows上的CMD。它不会对波浪号进行插值。使用独立于平台的变量或检测平台并使用process.env查找$ HOME或$ WINHOME的值 - 具体取决于操作系统。

编辑:没看到它是NPM脚本......错过了标签。想到提到Node的问题。