我正在寻找最简单的方法来自动将咖啡脚本重新编译为JS。
阅读documentation,但仍然遇到麻烦才能得到我想要的东西。
我需要它来查看任何src/
文件修改的文件夹*.coffee
,并将它们编译成连接的javascript文件到lib/something.js
。
无论如何不能将观看,编译和连接组合在一起。 :/
答案 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/
它允许高度复杂的构建过程 - 例如,您可能
任务可以串在一起,观看的文件/文件夹也可以高度自定义。
答案 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