如何保存我的NodeJs CLI应用程序的配置设置?

问题描述

我正在将nodejs应用程序设计为cli工具。我正在使用if ($contents = file_get_contents($url)) { // it worked } else { die("Failed to fetch ".$url.",error: ".error_get_last()['message']); } 定义命令,并且正在使用` import environ env = environ.Env( DEBUG=(bool,False),ENVIORNMENT=(str,'PRODUCTION'),) environ.Env.read_env() ENVIRONMENT= env.str('ENVIRONMENT') SECRET_KEY = env.str('SECRET_KEY') DEBUG = env.bool('DEBUG') ALLOWED_HOSTS = tuple(env.list('ALLOWED_HOSTS')) ` 方法从.config或config.json文件中加载认配置设置,如下所示:

yargs

我想创建一个可用于配置.config文件的命令。像这样:

.config()

是否可以使用npm软件包来执行此操作,还是我必须自己动手?

解决方法

我自己滚了。

# configure.js
const findUp = require('find-up')
const fs = require('fs')

exports.command = 'configure'
exports.desc    = 'Set or view your configuration'
exports.builder = {
    'defaults': {
        desc: 'set configuration values',type: 'array',group: 'Parameters:'

    }
}
exports.handler = function (argv) {

    const configPath = findUp.sync(['.config','config.json']);
    const config = configPath ? JSON.parse(fs.readFileSync(configPath)) : {};

    if (argv.defaults) {
        argv.defaults.map( arg => {
            var args = arg.split('=');
            if (args[1]) {
                config[args[0]] = args[1];
            } else {
                delete config[args[0]];
            }            
        })

        var file = configPath ? configPath : "./.config";
        fs.writeFileSync(file,JSON.stringify(config,null,2));
    } else {
        console.log( JSON.stringify(config,2));
    }
}