如何在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脚本中工作?
解决方法是直接调用bash
:
"d-copy-aws": "bash -c \"docker cp ~/.aws constraint-listener:/root\" && echo aws credentials copied",
当从节点呼唤你使用的是标准的外壳,大概CMD在Windows上。它不会对字符串进行字符串内插。改用平台独立变量或检测平台,并使用process.env查找$ HOME或$ WINHOME的值 - 具体取决于操作系统。
编辑:没有看到它是一个NPM脚本...错过了标签。思考了Node提到的问题。
我认为这应该对你有所帮助:https://stackoverflow.com/a/9081436/1262789 – Bhavyanshu