【问题标题】:Writing a "batch file" to execute CoffeeScript on Node... on Mac编写“批处理文件”以在 Node 上执行 CoffeeScript ......在 Mac 上
【发布时间】:2012-02-18 01:11:44
【问题描述】:

在 Windows 上,我有以下 .cmd 文件:

.\node_modules\.bin\coffee .\lib\cli --html="index.htm" --whichBuild="configs/whichBuild.xml" %*

即:

  • 我打电话给.\node_modules\.bin\coffee.cmd
  • 告诉它执行.\lib\cli.coffee
  • 传递参数--html="index.htm" --whichBuild="configs/whichBuild.xml"
  • 还将用户在命令行上给我的任何参数传递给它。

在 Mac 上,我不知道该怎么做。 node.execoffee.cmd 不会出现。这些事情是如何完成的?

我想要一些简单的东西,我可以告诉我们的构建人员“运行myCommand arg1 arg2,它会起作用的。”我在 Windows 上有,但在 Mac 上我一无所知。

另外值得注意的是:我的 Windows 方法的优点之一是我们的 build-guy 不必安装 node 或 npm 或 coffee-script 或任何东西。他只是从源代码管理中抓取了一个目录,其中包含node.execoffee.cmd 等全部打包。非常需要 Mac 的类似功能。

【问题讨论】:

  • 我不确定 Mac 上的等效工具是什么,但您正在寻找的通常是在 *nix(包括 Linux 和 Mac)系统上调用 Shell 脚本。我对咖啡一无所知,但如果它有一个与 Mac 上的 coffee.cmd 等效的工具,你应该能够组合一些东西来做到这一点。

标签: macos shell node.js batch-file coffeescript


【解决方案1】:

您可以确定 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 需要它。

恕我直言,您最好花时间记录如何在本地安装节点和咖啡脚本,而不是创建一个脚本来解决没有安装它们的开发人员的问题。

【讨论】:

  • 据我所知,如果我只安装节点而不需要安装 npm + coffeescript,这可能会起作用。那会是正确的吗?如果是这样,我认为这是最好的方法。
  • 嗨。正确的。如果安装了节点,上面的脚本应该可以工作。
【解决方案2】:

首先,您可以使用node.js web site 上的安装程序在 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”。

如果从 nodejs.org 的安装程序包中将 node.js 安装在 OSX 中,那么您将拥有 /usr/local/bin/node 可以与 shell 魔术一起使用。因此:#!/usr/local/bin/node ...尽管如果您希望脚本能够在可能在不同位置安装了 node.js 的不同系统上运行,#!/usr/bin/env node 是一个更兼容的选项。

一清二楚? :-)

【讨论】:

  • 所以这让我开始了,我猜。我想我会写一个小 JavaScript 程序来手动调用咖啡脚本运行器并进行 arg 解析?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 2023-03-19
相关资源
最近更新 更多