需要()';从JavaScript文件或REPL中删除CoffeeScript文件
我正在使用Node.js,希望将CoffeeScript合并到我的工作流中。我有两个用例:需要()';从JavaScript文件或REPL中删除CoffeeScript文件,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我正在使用Node.js,希望将CoffeeScript合并到我的工作流中。我有两个用例: 我希望能够编写JavaScript文件,这些文件require()CoffeeScript模块 我希望能够从节点REPL中加载CoffeeScript模块 对于案例#1:我可以从.coffee编译到.js和require()模块,作为一种变通方法 对于案例2:我现在正在eval()处理coffee script.compile()的输出 有没有更好、更统一的方法来实现这一点?一旦需要,coffee脚本模块
require()
CoffeeScript模块.coffee
编译到.js
和require()
模块,作为一种变通方法
对于案例2:我现在正在eval()
处理coffee script.compile()的输出
有没有更好、更统一的方法来实现这一点?一旦需要,coffee脚本模块就会注册其扩展
$ 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');
一个更通用的解决方案是使用
它允许您require()
CoffeeScript文件,无需预编译。(它还允许您require()
一系列其他文件格式:CoffeeScript、clojurescript、yaml、xml等。)
对于CoffeeScript,它只需要CoffeeScript
模块
require('better-require')();
var myModule = require('./mymodule.coffee');
var clojurescriptModule = require('./mymodule.cljs');
// etc.
披露:我写了更好的要求
那咖啡脚本REPL呢,咖啡
?与节点一相比,REPL非常原始:它缺少颜色、自动完成、多行语句等cupdate:咖啡
REPL现在棒极了:)哈,为什么我没想到呢?:)require.extensions
现在已经被弃用,没有其他选择。我希望它能继续使用,因为它是一个稳定的功能,正如您所提到的,目前还没有其他选择。require.extensions
的核心问题是注册扩展会改变整个应用程序的全局状态,better require
未解决此问题,这意味着,如果您的任何第三方子模块碰巧依赖于不同版本的,例如Yaml或CoffeeScript,则情况会发生变化。better-require默认情况下也不会加载“.litcoffee”模块,而它们可以通过require('coffee-script/register')加载代码>
require('better-require')();
var myModule = require('./mymodule.coffee');
var clojurescriptModule = require('./mymodule.cljs');
// etc.