我有一个Grunt任务,它在本地机器上执行.cmd文件来完成它的工作。我需要在CI服务器上使用此任务,CI服务器是Linux机器。我有相关的.sh(Linux的shell脚本)。我需要一种方法来执行这两个而不改变我的Gruntfile。
目前我必须更改我的Gruntfile,使其在本地工作,用于Windows和远程文件使用.sh。
欢迎任何解决方案。检测底层操作系统?或者调用内部调用OS特定命令的相同命令的方法?
答案 0 :(得分:21)
您可以利用节点的process.platform:
process.platform
你正在运行什么平台:'darwin','freebsd','linux','sunos'或'win32'console.log('这个平台是'+ process.platform);
然后在代码中,根据具体情况添加文件扩展名:
if (process.platform === "win32") {
ext = ".cmd";
} else {
ext = ".sh";
}
答案 1 :(得分:0)
使用grunt-shell或任何其他shell命令工具,利用win和* nix shell之间的相似性,尤其是||
。第一个cmd
将在* nix上失败并回退到sh
:
shell: {
options: {
stderr: false,
failOnError: true
},
command: 'cmd command.cmd || sh command.sh'
}