在node / Grunt中执行操作系统特定的脚本
我有一个Grunt任务在本地机器上执行.cmd文件来做它的事情。 我需要在CI服务器上使用这个任务,这是一台Linux机器。 我有相关的.sh(用于Linux的shell脚本)。 我需要一种方法来执行这两个不更改我的Gruntfile。
目前,我必须更改我的Gruntfile,使其在本地为Windows和远程文件使用.sh。
任何解决scheme做同样是受欢迎的。 检测底层操作系统? 或者调用相同的命令,内部调用特定于操作系统的命令?
您可以利用节点的process.platform :
process.platform
你运行的是什么平台:“达尔文”,“freebsd”,“linux”,“sunos”或“win32”console.log('This platform is'+ process.platform);
然后在代码中,可以select添加文件扩展名的基础上:
if (process.platform === "win32") { ext = ".cmd"; } else { ext = ".sh"; }
使用grunt-shell或其他shell命令工具,利用win和* nix shell之间的相似性,特别是||
。 第一个cmd
将在* nix上失败,并回退到sh
:
shell: { options: { stderr: false, failOnError: true }, command: 'cmd command.cmd || sh command.sh' }