首页 > 解决方案 > 有没有更好的方法来访问 package.json 中的数组数据

问题描述

我的 package.json 中有一小段配置:

{
    "name": "who-rules-app",
    "config": {
        "foo": "bar",
        "words": [
            "tpr",
            "rules"
        ]
    },
    "scripts": {
        "start": "node src/index.js"
    }
}

据我所知,人们通常使用 访问config密钥process.env['npm_package_${keyname}'],例如:

process.env['npm_package_config_foo']
//> "bar"

但是当值是一个数组时,你会得到一组扁平的编号键:

process.env['npm_package_config_words_0']
//> "tpr"
process.env['npm_package_config_words_1']
//> "rules"

我总是可以使用 读取磁盘上的文件fs,但我的理解是通过process.env允许这些东西与环境变量交互,这是处理跨不同环境的配置的一种非常好的方法。

理想情况下,我想:

process.env['npm_package_config_words']
//> [ "tpr", "rules" ]

有没有更好的办法?那里有一个经过良好测试的模块?很酷的图案?

任何帮助表示赞赏。

标签: javascriptjsonnode.jspackage.json

解决方案


而不是使用基本上是 process.env hack,任何最新版本的 Node 都会很高兴地加载 .json 文件开箱即用,所以只需编写如下内容:

let package = require('./package.json');
let config = package.config || {};
let words = config.words || [];

这就是您需要做的所有事情。


推荐阅读