【发布时间】:2011-06-30 23:11:02
【问题描述】:
我正在寻找最简单的方法来自动将咖啡脚本重新编译成 JS。
阅读documentation,但仍然无法获得我想要的东西。
我需要它来监视文件夹src/ 中的任何*.coffee 文件修改并将它们编译成连接的javascript 文件到lib/something.js。
不知何故不能将观察、编译和连接结合在一起。 :/
【问题讨论】:
标签: javascript compilation coffeescript
我正在寻找最简单的方法来自动将咖啡脚本重新编译成 JS。
阅读documentation,但仍然无法获得我想要的东西。
我需要它来监视文件夹src/ 中的任何*.coffee 文件修改并将它们编译成连接的javascript 文件到lib/something.js。
不知何故不能将观察、编译和连接结合在一起。 :/
【问题讨论】:
标签: javascript compilation coffeescript
咖啡脚本文档为此提供了一个示例:
观察文件的变化,并在每次保存文件时重新编译:
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
【讨论】:
coffee -o lib/ --join --compile src/*.coffee + dnotify 可以解决问题。
改变了关于串联的想法。
创建了一个小的 compiler.sh 文件,其中包含:
dnotify -M src/ -e coffee -o lib/ -c src/ &
dnotify -M spec/ -e coffee -o lib/ -c spec/ &
一种适合我的需要。
【讨论】:
ps ux | awk '/dnotify/ && !/awk/ {print $2}'
您的问题的简短回答是 coffee 实用程序不是为此而设计的;结合文件监视和连接实际上非常复杂。期待在不久的将来为 CoffeeScript 提供更复杂的构建工具;在那之前,您可能希望通过编写 Cakefile 或 Ruby Watchr 脚本来构建您的项目。然后,您还可以添加缩小、文档生成以及您特定项目所需的任何其他内容(更不用说保证特定的串联顺序)。
【讨论】:
coffee --watch 有两个主要缺陷:
git commit它我想出的解决方案是一个相当简单的 Bash 脚本,它需要 coffee --watch 进一步几步,这将允许你的工作目录树在系统登录后被监视,并在每个文件保存时自动编译成 JavaScript/改变
或创建新文件:
http://blog.gantrithor.com/post/11609373640/carefree-coffeescript-auto-compiler
可能有更优雅的方式来做到这一点,但这个实现效果很好 =)
【讨论】:
试试抖动
https://github.com/TrevorBurnham/jitter
它监视一个 .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
找到最后修改的咖啡脚本并将其置于编译监视模式
【讨论】:
比 /src 高一级,这将适用于所有找到的 .coffee 文件,无论深度如何。
coffee -w -c src/
【讨论】:
我发现命令行 coffeescript 编译器不太适合复杂的项目结构。
如果您和您的构建过程和我一样需要,请查看 Grunt - http://gruntjs.com/
它允许高度复杂的构建过程 - 例如,您可以
任务可以串在一起,监视的文件/文件夹也可以高度自定义。
【讨论】:
nodemon -x coffee server.coffee 为我做。
使用npm install -g nodemon安装nodemon
【讨论】:
find `pwd` | grep .coffee | xargs coffee -w -c
在应用的根目录试试这个
【讨论】:
这对我有帮助(-o 输出目录,-j 加入 project.js,-cw 编译并深入观察咖啡脚本目录):
coffee -o web/js -j project.js -cw coffeescript
【讨论】: