我正在调用我的测试文件,例如test.coffee.unit
,用于单元测试...(产生输出test.spec.unit
)
但是,当调用require "test.coffee.unit"
节点将文件解释为javascript并且无法评估时。我一直在查看文档和https://github.com/jashkenas/coffee-script/blob/master/lib/coffee-script/coffee-script.js#L192,看看我是否能找到方法,但我没有看到任何看起来很有希望的东西。
我还看了https://github.com/joyent/node/blob/master/lib/module.js#L347和http://nodejs.org/api/modules.html#modules_all_together,看看我能从中收集到什么......
要点:
有没有办法注册.coffee.unit
或.unit
扩展程序,以便require
将其评估为CoffeeScript?
答案 0 :(得分:1)
您有两种选择。
coffee-script
来源。对于其中一种,您需要参考section-19 of the coffee-script
node
module。
相关代码显示了如何配置require扩展名:
if require.extensions
for ext in ['.coffee', '.litcoffee', '.coffee.md']
require.extensions[ext] = loadFile
代码coffee-script
用于加载文件:
loadFile = (module, filename) ->
raw = fs.readFileSync filename, 'utf8'
stripped = if raw.charCodeAt(0) is 0xFEFF then raw.substring 1 else raw
answer = compile(stripped, {filename, sourceMap: true, literate: helpers.isLiterate filename})
sourceMaps[filename] = answer.sourceMap
module._compile answer.js, filename
您需要追踪依赖项。大多数都在coffee-script
模块的出口上。例如,
compile(stripped, {filename, sourceMap: true, literate: helpers.isLiterate filename})
要
cs = require 'coffee-script'
cs.compile(stripped, {filename, sourceMap: true, literate: cs.helpers.isLiterate filename})
非常欢迎使用完整的解决方案编辑此答案。