我有一个用node开发的小型web服务,我想用coffeescript编写一些文件,开始使用它。
我使用nodemon来运行应用程序,像这样
nodemon app.js
文件结构如下
app.js控制器/ping.coffee. js
在nodemon的主页上,它说它支持coffeescript,但是我改变了文件,它不会被重新加载。
然后我发现了这篇文章,所以我试着用
$ coffee --watch --compile ./controllers/*.coffee
效果很好,但是如果我尝试用
$ coffee --watch --compile ./*.coffee
File not found: ./*.coffee
所以看起来watch选项不是递归的
任何想法我怎么能使nodemon pick coffeescript文件的变化,或有咖啡编译器递归地挑选文件?
如果您显式地使用-e js,coffee
指定扩展名,Nodemon将正确地监视coffeescript文件。这与文档的状态相反,我在这里就这个问题提交了一个罚单:https://github.com/remy/nodemon/issues/312
应该可以:
coffee --watch --compile ./
也可以将标志缩短为-wc
您所做的在coffeescript库中很常见。许多库都有一个脚本,可以将一个目录中的所有coffeescript文件编译为另一个目录中的Javascript文件。例如,Cakefile
从src/
编译为lib/
。你可以选择cake watch
或cake build
,这取决于你想做什么。
{print} = require 'util'
{spawn} = require 'child_process'
task 'build', 'Build lib/ from src/', ->
coffee = spawn 'coffee', ['-c', '-o', 'lib', 'src']
coffee.stderr.on 'data', (data) ->
process.stderr.write data.toString()
coffee.stdout.on 'data', (data) ->
print data.toString()
coffee.on 'exit', (code) ->
callback?() if code is 0
task 'watch', 'Watch src/ for changes', ->
coffee_src = spawn 'coffee', ['-w', '-c', '-o', 'lib', 'src']
coffee_src.stderr.on 'data', (data) -> process.stderr.write data.toString()
coffee_src.stdout.on 'data', (data) -> print data.toString()
然而,如果你不是在运行node,而是在运行一个浏览器应用程序,我建议使用神奇的hem。为此,我还在这里编写了入门指南:https://stackoverflow.com/a/14993583/586086