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

问题描述:

我试图将~/.aws复制到我的码头集装箱中。但是我在运行git-bash的Windows机器上,这似乎是导致一些问题。如何在npm脚本中以跨平台兼容的方式使用〜(home dir)?

两件事至今我已经试过:

"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脚本中工作?

+0

我认为这应该对你有所帮助:https://stackoverflow.com/a/9081436/1262789 – Bhavyanshu

解决方法是直接调用bash

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

当从节点呼唤你使用的是标准的外壳,大概CMD在Windows上。它不会对字符串进行字符串内插。改用平台独立变量或检测平台,并使用process.env查找$ HOME或$ WINHOME的值 - 具体取决于操作系统。

编辑:没有看到它是一个NPM脚本...错过了标签。思考了Node提到的问题。