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



我正在制作一个nodejs应用程序作为cli工具。我使用yargs来定义我的命令,并使用.config()方法从.config或config.json文件加载默认配置设置,如下所示:

const findUp = require('find-up')
const fs = require('fs')
const yargs = require('yargs');
const configPath = findUp.sync(['.config', 'config.json']);
const config = configPath ? JSON.parse(fs.readFileSync(configPath)) : {};
yargs
.command( require('./command/command-name'))
.option( .... )
.config( config )
.argv

我想创建一个可以用来配置.config文件的命令。类似于:

my-tool configure --defaults key1=<value> key2=<value>

有没有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, null, 2));
}
}

相关内容

最新更新