require()来自JavaScript文件或REPL的CoffeeScript文件

时间:2011-01-22 15:39:46

标签: javascript node.js coffeescript

我正在使用Node.js并希望将CoffeeScript合并到我的工作流程中。我有两个用例:

  1. 我希望能够编写require() CoffeeScript模块
  2. 的JavaScript文件
  3. 我希望能够从节点REPL
  4. 中加载CoffeeScript模块

    对于案例#1:我可以从.coffee编译为.jsrequire() .js模块,作为解决方法。

    对于案例#2:现在我eval()输出coffee-script.compile()

    有更好,更统一的方法吗?

2 个答案:

答案 0 :(得分:94)

coffee-script 模块在需要时注册其扩展名。

$ echo 'console.log "works"' > module.coffee

$ echo '
> require("coffee-script")
> require("./module")
> ' > test.js

$ node test.js
works

$ node
> require('coffee-script'); require('./module')
works
{}

编辑:此行为随着CoffeeScript 1.7.0的重新发布而发生了变化。现在你需要做:

require('coffee-script/register');

答案 1 :(得分:12)

更通用的解决方案是使用better-require

npm install better-require

它允许您require() CoffeeScript文件,无需预编译。 (它还允许你require()一堆其他文件格式:CoffeeScript,clojurescript,yaml,xml等。)

对于CoffeeScript,它只需要coffee-script模块。

require('better-require')();
var myModule = require('./mymodule.coffee');
var clojurescriptModule = require('./mymodule.cljs');
// etc.

披露:我写了better-require