咖啡脚本编译

时间:2011-02-20 23:51:47

标签: javascript compilation coffeescript

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

阅读documentation,但仍然遇到麻烦才能得到我想要的东西。

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

无论如何不能将观看,编译和连接组合在一起。 :/

11 个答案:

答案 0 :(得分:21)

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

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

coffee --watch --compile experimental.coffee

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

dnotify --all src/ --execute=command

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

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

答案 1 :(得分:7)

尝试抖动

https://github.com/TrevorBurnham/jitter

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

  

jitter / path / to / coffee / dir / path / to / js / dir

我一直在试用一个使用coffescript和sencha touch的项目,它看起来效果很好。不处理串联问题,但对于只需要自动编译的人来说,它非常简单。

答案 2 :(得分:4)

这帮助了我(-o输出目录,-j加入到project.js,-cw编译并全面观察coffeescript目录:

coffee -o web/js -j project.js -cw coffeescript

答案 3 :(得分:3)

coffee --watch有两个主要缺陷:

  • 发出命令后创建的新文件未被监视
  • 需要手动启动,因此有可能忘记这样做,这听起来比忘记编译之前更加精彩git commit

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

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

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

答案 4 :(得分:2)

find -type f | grep .coffee | xargs ls -t | head -n 1 | xargs coffee -cw

找到最后修改过的coffeescript并将其置于编译器监视模式

答案 5 :(得分:2)

在/ src之上,这适用于所有.coffee文件,无论深度如何。

coffee -w -c src/

答案 6 :(得分:2)

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

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

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

  1. 将咖啡连接到新文件
  2. 编译
  3. 连接一些额外的JS
  4. 缩小
  5. 任务可以串在一起,观看的文件/文件夹也可以高度自定义。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

find `pwd` | grep .coffee | xargs coffee -w -c

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

答案 9 :(得分:0)

改变了关于连接的想法 创建了一个小的compiler.sh文件,其中包含:

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

符合我的需要。

答案 10 :(得分:0)

nodemon -x coffee server.coffee为我做了。

使用nodemon

安装npm install -g nodemon