autocompile .coffee文件和重新加载项目

时间:2013-03-18 05:32:35

标签: node.js coffeescript node-modules

我有一个在节点中开发的小型Web服务,我想用coffeescript编写一些文件,开始玩它。

我正在使用nodemon来运行应用程序,就像这样

nodemon app.js 

我有以下文件结构

app.js 控制器/   ping.coffee   test.js

nodemon's homepage中它表示它支持coffeescript,但我更改了文件并且不会重新加载。

然后我找到了this article,所以我尝试了

$ coffee --watch --compile ./controllers/*.coffee

它工作正常,但如果我尝试

$ coffee --watch --compile ./*.coffee 
File not found: ./*.coffee

因此看起来监视选项不是递归的。

任何想法如何让nodemon选择coffeescript文件更改,或让咖啡编译器递归选择文件?

3 个答案:

答案 0 :(得分:3)

如果您使用-e js,coffee明确指定其扩展名,Nodemon将正确观看coffeescript文件。这与文档说明的内容相反,我在这里就此问题提交了一张票:https://github.com/remy/nodemon/issues/312

答案 1 :(得分:2)

这应该有效:

coffee --watch --compile ./

此外,您可以将标记缩短为-wc

答案 2 :(得分:1)

你正在做的事情在coffeescript图书馆中很常见。许多库都有一个脚本,可以将一个目录中的所有coffeescript文件编译为另一个目录中的Javascript文件。例如,以下Cakefilesrc/编译为lib/。您可以cake watchcake 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()

但是,如果您没有运行节点但实际上正在运行浏览器应用程序,我建议使用精彩的hem。为此,我还在这里写了一本入门指南:https://stackoverflow.com/a/14993583/586086