Javascript 咖啡脚本汇编

Javascript 咖啡脚本汇编,javascript,compilation,coffeescript,Javascript,Compilation,Coffeescript,我正在寻找最简单的方法来自动将咖啡脚本重新编译到JS中 阅读,但仍然有困难,以获得确切的我想要的 我需要它来监视文件夹src/中的任何*.coffee文件修改,并将它们编译成连接的javascript文件到lib/something.js 无法将监视、编译和连接结合在一起:/ 咖啡脚本文档提供了一个示例: 查看文件的更改,并在每次保存文件时重新编译: coffee --watch --compile experimental.coffee 如果要执行特定脚本,可以使用linux命令dnotif

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

阅读,但仍然有困难,以获得确切的我想要的

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


无法将监视、编译和连接结合在一起:/

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

查看文件的更改,并在每次保存文件时重新编译:

coffee --watch --compile experimental.coffee
如果要执行特定脚本,可以使用linux命令dnotify:

编辑: 我对dnotify的执行部分有一些问题,可能是一个bug,但这就是我工作的原因:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee`
每次修改文件时执行编译命令的

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

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`
它将在一个单独的过程中启动。要获取进程ID,可以使用以下命令:

ps ux | awk '/dnotify/ && !/awk/ {print $2}'
然后,您可以使用以下方法终止进程:

dnotify --all . -e `coffee -o lib/ --join --compile *.coffee` &
kill `ps ux | awk '/dnotify/ && !/awk/ {print $2}'`
但是,如果这是您的目标(通过进程名进行杀戮),您可以使用以下方法以更简单的方式进行杀戮:

killall dnotify

改变了关于连接的想法。
已创建包含以下内容的小型compiler.sh文件:

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

种类a适合我的需要。

您的问题的简短回答是,
咖啡
实用程序不是为此而设计的;将文件监视和连接结合起来实际上相当复杂。预计在不久的将来,CoffeeScript会有更复杂的构建工具;在此之前,您可能希望通过编写Cakefile或rubywatchr脚本来完成项目的构建。然后,您还可以加入缩小、文档生成,以及您特定项目所需的任何其他功能(更不用说保证特定的连接顺序)。

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

  • 命令发出后创建的新文件不被监视
  • 需要手动启动,因此您可能会忘记执行此操作,这听起来并不比在您提交git之前忘记编译更聪明
我提出的解决方案是一个相当简单的Bash脚本,它需要
coffee--watch
进一步几个步骤,这将允许您的工作目录树在系统登录后一直被监视,并在每次文件保存/更改时自动编译成JavaScript 或创建新文件:

也许有更优雅的方法可以做到这一点,但这个实现非常有效=)

试试抖动

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

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

我用coffescript和sencha touch在一个项目中进行了尝试,看起来效果不错。不考虑连接问题,但对于只需要自动编译的人来说,使用它非常简单

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

查找上次修改的coffee脚本并将其置于编译监视模式下

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

coffee -w -c src/

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

如果您和您的构建过程和我一样需要,请查看Grunt-

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

  • 将咖啡连接到新文件
  • 编撰
  • 连接一些额外的JS
  • 缩小

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

    nodemon-x coffee server.coffee
    为我做这件事

    使用
    npm安装-g nodemon安装
    nodemon

    find `pwd` | grep .coffee | xargs coffee -w -c
    
    在应用程序的根目录中试试这个(
    -o
    output目录,
    -j
    join to project.js,
    -cw
    全面编译并观看coffeescript目录):


    哎呀。设法编译了1个文件。有多个问题。我猜
    coffee-o lib/--join--compile src/*。coffee
    +dnotify会起作用。我认为应该这样,但无法理解。:)我编辑了我的问题以包含命令。我看到你还添加了自己的答案,这可能也很有效:)@arnorhs是的。问题解决了。我真的不熟悉所有这些,包括linux。谢谢你的帮助。我以前从未试过咖啡脚本,它看起来很有趣。谢谢你给我介绍:)很好。您不需要在这些命令中附加一个&以便执行它们吗?按照它的设置方式,只有第一个命令将被执行,脚本将等待命令退出。抓取进程ID也是一个好主意,这样以后就可以停止进程了…@arnorhs另一个新手问题-如何抓取pid?:)您可以这样做:ps ux | awk'/dnotify/&/awk/{print$2}'这将显示机器上运行的所有数据通知进程的进程ID。。所以你可以调用:kill
    ps-ux | awk'/dnotify/&/awk/{print$2}'
    我遇到过这样的情况,如果node_模块包含在同一个目录中,我会遇到这样的错误:这与监视太多文件有关,我不明白这是如何导致我的答复错误的。--