从 JavaScript 文件或 REPL 中 require()'ing CoffeeScript 文件

2022-01-24 00:00:00 node.js javascript coffeescript

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

I'm using Node.js and wanting to incorporate CoffeeScript into my workflow. I have two use-cases:

  1. 我希望能够编写 require() CoffeeScript 模块的 JavaScript 文件
  2. 我希望能够从节点 REPL 中加载 CoffeeScript 模块
  1. I want to be able to write JavaScript files which require() CoffeeScript modules
  2. I want to be able to load CoffeeScript modules from within the node REPL

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

For case #1: I can just compile from .coffee to .js and require() the .js module, as a workaround.

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

For case #2: Right now I'm eval()ing the output of coffee-script.compile().

有没有更好、更统一的方法来做到这一点?

Is there a better, more unified way to do this?

推荐答案

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

The coffee-script module registers its extension once required.

$ 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 的发布而改变.现在你需要做:

Edit: This behaviour has changed with the relase of CoffeeScript 1.7.0. Now you need to do:

require('coffee-script/register');

相关文章