22

我正在寻找最简单的方法来自动将咖啡脚本重新编译成 JS。

阅读文档,但仍然无法获得我想要的东西。

我需要它来监视文件夹src/中的任何*.coffee文件修改并将它们编译成连接的 javascript 文件到lib/something.js.

不知何故不能将观察、编译和连接结合在一起。:/

4

11 回答 11

21

咖啡脚本文档为此提供了一个示例:

观察文件的变化,并在每次保存文件时重新编译:

coffee --watch --compile experimental.coffee

如果您有要执行的特定脚本,可以使用 linux 命令 dnotify: http: //linux.die.net/man/1/dnotify

dnotify --all src/ --execute=command

编辑:我在 dnotify 的 --execute 部分遇到了一些问题 - 可能是一个错误,但这就是我的工作:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`

每次修改文件时都会执行编译命令。

如果您在命令后面附加一个 & 符号,如下所示:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &

它将在一个单独的过程中启动。要获取进程 ID,您可以使用以下命令:

ps ux | awk '/dnotify/ && !/awk/ {print $2}'

然后,您可以使用以下方法终止该进程:

kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`

但是,如果这是您的目标(按进程名称杀死),您可以使用以下方法以更简单的方式完成:

killall dnotify
于 2011-02-21T00:02:34.947 回答
7

试试抖动

https://github.com/TrevorBurnham/jitter

它监视 .coffee 文件的目录,当它检测到文件已更改时,它会自动将其重新编译为 .js

抖动 /path/to/coffee/dir /path/to/js/dir

我一直在尝试使用 coffescript 和 sencha touch 的项目,它似乎工作得很好。不处理连接问题,但对于只需要自动编译的人来说使用起来真的很简单。

于 2011-11-03T20:00:55.970 回答
4

这对我有帮助(-o输出目录,-j加入 project.js,-cw编译并深入观看 coffeescript 目录):

coffee -o web/js -j project.js -cw coffeescript
于 2013-05-21T06:32:34.443 回答
3

Wellcoffee --watch有2个主要缺陷:

  • 发出命令后创建的新文件不被监视
  • 需要手动启动,因此您可能会忘记这样做,这听起来并不比忘记在您之前编译更git commit出色

我想出的解决方案是一个相当简单的 Bash 脚本,它需要coffee --watch更进一步的步骤,这将允许您的工作目录树在系统登录后被监视,并在每个文件保存/更改或新文件创建时自动编译为 JavaScript:

http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler

可能有更优雅的方式来做到这一点,但这个实现效果很好 =)

于 2011-10-18T20:23:42.243 回答
2
find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw

找到最后修改的咖啡脚本并将其置于编译监视模式

于 2011-12-30T14:41:51.887 回答
2

作为 /src 上一级,这将适用于所有找到的 .coffee 文件,无论深度如何。

coffee -w -c src/
于 2012-10-18T10:17:55.577 回答
2

我发现命令行 coffeescript 编译器不太适合复杂的项目结构。

如果您和您的构建过程和我一样需要,请查看Grunt - http://gruntjs.com/

它允许高度复杂的构建过程 - 例如,您可能

  1. 将咖啡连接到新文件
  2. 编译
  3. 连接一些额外的 JS
  4. 缩小

任务可以串在一起,监视的文件/文件夹也可以高度自定义。

于 2012-11-01T07:41:11.170 回答
1

对您的问题的简短回答是该coffee实用程序不是为此而设计的;结合文件监视和连接实际上非常复杂。期待在不久的将来为 CoffeeScript 提供更复杂的构建工具;在那之前,您可能希望通过编写 Cakefile 或 Ruby Watchr 脚本来构建您的项目。然后,您还可以添加缩小、文档生成以及特定项目所需的任何其他内容(更不用说保证特定的串联顺序)。

于 2011-02-23T02:09:26.450 回答
1
find `pwd` | grep .coffee | xargs coffee -w -c

在应用程序的根目录中尝试这个

于 2013-02-25T20:25:49.947 回答
0

改变了关于串联的想法。
创建了小的 compiler.sh 文件,其中包含:

dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &

一种适合我的需要。

于 2011-02-21T00:33:20.057 回答
0

nodemon -x coffee server.coffee为我做。

安装nodemon使用npm install -g nodemon

于 2013-02-05T19:24:48.210 回答