如何使用CoffeeScript而不是JSON?对于配置文件等

时间:2012-08-19 03:36:29

标签: json node.js coffeescript

JSON真的很难用于本地配置文件,因为它不支持注释或函数,并且需要令人难以置信的冗长语法(逗号,总是使用"作为键)。使其非常容易出错,或者在需要功能的情况下,不可能使用。

现在我知道我可以这样做:

require('coffee-script')
config = require('config.coffee')

但是,这需要我在module.exports = {the data}config.coffee做一个不太理想的事情。甚至允许公开诸如require之类的内容,如果我们不信任它们,可能会使配置文件不安全。

有没有人找到一种方法来阅读coffeescript配置文件,但要保证它们的安全吗?

1 个答案:

答案 0 :(得分:14)

事实证明,通过sandbox调用将true参数设置为eval,CoffeeScript支持内置的安全性部分。 E.g。

# Prepare
fsUtil = require('fs')
coffee = require('coffee-script')

# Read
dataStr = fsUtil.readFileSync('path').toString()
data = coffee.eval(dataStr, {sandbox:true})

上面的代码将读入文件数据,然后在沙盒模式下使用coffeescript进行评估。

我为这个名为CSON创建了一个不错的包装器,通过上述机制通过require和coffee文件支持jscson个文件,{{3}} 1}}文件通过典型的json - 以及将值字符串化回coffeescript表示法。使用此方法,将公开以下API:

JSON.parse