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

nic*_*ten 53 javascript node.js coffeescript

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

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

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

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

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

mat*_*tyr 94

咖啡脚本模块注册一次需要它的扩展.

$ 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
{}
Run Code Online (Sandbox Code Playgroud)

编辑:这种行为随着CoffeeScript 1.7.0的重新发生而改变.现在你需要做:

require('coffee-script/register');
Run Code Online (Sandbox Code Playgroud)

  • `require.extensions`现已弃用,目前还没有其他选择. (2认同)

Oli*_*nde 12

更通用的解决方案是使用更好的要求.

npm install better-require
Run Code Online (Sandbox Code Playgroud)

它允许您使用require()CoffeeScript文件,无需预编译.(它还可以为您require()提供一些其他文件格式:CoffeeScript,clojurescript,yaml,xml等)

在CoffeeScript的情况下,它只需要coffee-script模块.

require('better-require')();
var myModule = require('./mymodule.coffee');
var clojurescriptModule = require('./mymodule.cljs');
// etc.
Run Code Online (Sandbox Code Playgroud)

披露:我写道better-require.