在node / Grunt中执行特定于OS的脚本

时间:2014-05-24 15:17:46

标签: node.js shell operating-system gruntjs

我有一个Grunt任务,它在本地机器上执行.cmd文件来完成它的工作。我需要在CI服务器上使用此任务,CI服务器是Linux机器。我有相关的.sh(Linux的shell脚本)。我需要一种方法来执行这两个而不改变我的Gruntfile。

目前我必须更改我的Gruntfile,使其在本地工作,用于Windows和远程文件使用.sh。

欢迎任何解决方案。检测底层操作系统?或者调用内部调用OS特定命令的相同命令的方法?

2 个答案:

答案 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'
    }