Yargs Node JS CLI实现未设置环境变量

问题描述

我不明白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 (将#修改为@)