在Windows上,我有以下.cmd
文件:
.node_modules.bincoffee .libcli --html="index.htm" --whichBuild="configs/whichBuild.xml" %*
即:
- 我呼叫
.node_modules.bincoffee.cmd
- 告诉它执行
.libcli.coffee
- 传递参数
--html="index.htm" --whichBuild="configs/whichBuild.xml"
- 并将用户在命令行上给我的任何参数传递给它
在Mac上,我不知道该怎么办。node.exe
和coffee.cmd
不会出现。这些事情是如何完成的?
我想要一些简单的东西,我可以告诉我们的构建人员"运行myCommand arg1 arg2
,它就会工作。"我在Windows上有,但在Mac上我一无所知。
同样值得注意的是:我的Windows方法的一个很好的特性是,我们的构建人员不必安装node、npm或coffee脚本或任何东西。他只是从源代码管理中获取一个目录,其中包含node.exe
、coffee.cmd
等。Mac的类似功能是非常需要的。
您可以确定OS X安装了Ruby的一个版本,因此这个小Ruby脚本应该与您在OS X上编写和工作的内容等效。
#!/usr/bin/env ruby
args = ARGV.join(" ")
system %Q{./node_modules/coffee-script/bin/coffee ./lib/cli --html="index.htm" --whichBuild="configs/whichBuild.xml" #{args}}
因此,将其写入一个名为myMacCommand
的文本文件中,然后通过运行chmod +x myMacCommand
来确保该文件是可执行的,现在从命令行运行脚本应该像./myMacCommand --option1=blah --option2=blah
一样简单
编辑:
仔细想想,上面的脚本可能实际上不起作用,因为Mac不会安装node.js,我相信CoffeeScript需要安装node.js。
IMHO,您的时间可能会花在记录如何安装node&coffee脚本,而不是创建一个脚本来绕过没有安装它们的开发人员。
首先,您可以使用node.js网站上的安装程序在Mac上安装node.js。
请记住,OSX是unix的一种风格,因此您可以使用各种脚本语言。这些可以用来制作"shell脚本"。在OSX(和Linux一样)中,常见的脚本语言是"bash"。当你在OSX中启动终端时,你正在运行一个"交互式"shell,它可以用来运行shell脚本或其他命令。
Shell脚本是文本文件,通常以一行开头,该行标识脚本将使用的解释器。例如#!/bin/bash
或#!/usr/bin/ruby
或#!/usr/local/bin/tclsh
。您会注意到,每一个都以#开头,被称为"shell magic"或"shbang"。
如果node.js是从nodejs.org的安装程序包安装在OSX中的,那么您将拥有/usr/local/bin/node,它可以与shell magic一起使用。因此:#!/usr/local/bin/node
。。。不过,如果您希望您的脚本能够在可能在不同位置安装了node.js的不同系统上运行,#!/usr/bin/env node
是一个更兼容的选项。
清澈如泥?:-)