问题描述
我正在将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()
是否可以使用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));
}
}