问题描述
我不明白yargs如何解析命令行参数。
当用户传递“ -v”或“ --verbose”时,我想有一个常规选项将应用程序的调试级别设置为“调试”。
我在logger.js
中实现了一个记录器实例,它看起来像这样:
const winston = require('winston');
let logger;
const format = winston.format.cli();
const logLevel = process.env.YOUTUBECLI_DEBUG || 'info';
logger = winston.createLogger({
level: logLevel,format: format,silent: true,});
logger.debug('Debug mode activated');
module.exports = logger;
youtube.js
需要logger.js
。
#!/usr/bin/env node
// NPM modules
const yargs = require('yargs');
// Custom modules
const init = require('./lib/init');
const youtube = require('./lib/youtube');
// Basics
yargs.version('1.0.0');
yargs.scriptName('youtube-cli');
yargs.usage('Usage: $0 <cmd> [options]');
// Download the audio stream
yargs.command({
command: 'download',describe: 'Download the audio stream from a YouTube URL',builder: {
url: {
describe: 'Youtube URL',demandOption: true,type: 'string',},handler: (argv) => {
const url = argv.url.replace(/\\/g,'');
youtube.main(url);
},});
// Enable verbose mode
yargs.option('verbose',{
alias: 'v',type: 'boolean',description: 'Run with verbose logging',}).argv;
// Handle debug mode
process.env.YOUTUBECLI_DEBUG =
yargs.argv.verbose || yargs.argv.v ? 'debug' : 'info';
// Require one command
yargs.demandCommand(1);
// Parse all commands
yargs.parse();
但是,永远不会设置环境变量,并且总是“信息”,即未提高调试级别。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)