JSON真的很难用于本地配置文件,因为它不支持注释或函数,并且需要令人难以置信的冗长语法(逗号,总是使用 "
为了钥匙)。使其非常容易出错,或者在需要功能的情况下,不可能使用。
现在我知道我可以这样做:
require('coffee-script')
config = require('config.coffee')
但是,这需要我这样做 module.exports = {the data}
内 config.coffee
这不太理想。甚至允许诸如此类的东西 require
暴露,如果我们不信任它们会使配置文件不安全。
有没有人找到一种方法来读取coffeescript配置文件,但保持安全吗?
事实证明,CoffeeScript通过设置支持内置的安全部分 sandbox
论证 true
通过 eval
呼叫。例如。
# Prepare
fsUtil = require('fs')
coffee = require('coffee-script')
# Read
dataStr = fsUtil.readFileSync('path').toString()
data = coffee.eval(dataStr, {sandbox:true})
上面的代码将读入文件数据,然后在沙箱模式下使用coffeescript进行评估。
我为此创建了一个很好的包装器 CSON 哪个支持 coffee
和 js
文件通过require,和 cson
通过上述机制的文件,和 json
通过典型的文件 JSON.parse
- 以及将值字符串化回coffeescript表示法。使用此方法,将公开以下API:
# Include CSON
CSON = require('cson')
# Parse a file path
CSON.parseFile 'data.cson', (err,obj) -> # async
result = CSON.parseFile('data.cson') # sync
# Parse a string
CSON.parse src, (err,obj) -> # async
result = CSON.parseSync(src) # sync
# Stringify an object to CSON
CSON.stringify data, (err,str) -> # async
result = CSON.stringifySync(obj) # sync