• 首页
  • nodejs
  • node.js 命令行框架 yargs 和你的程序实现交互

node.js 命令行框架 yargs 和你的程序实现交互

如何让你的node.js 应用程序像shell 脚本一样和你交互?

于是就有了今天这一片博文 关于 yargs 使用分享.


大概有一种情况你需要让你的程序接收一个参数,通过这个参数我们做一系列的定制化功能.

常见的做法是 把一些不同环境不同配置的变量写到 config 配置文件中.

当你的环境变化的时候,你手动去修改你的config 中的变量来达到不同环境显示定制化的东西.


更具象的一个例子:

config文件中有一个配置项 langue

当你发布国内站点的时候,你需要配置成 langue="zh-cn"

当你发布国外站点的时候,你需要配置成 langue="en"


现在, yargs 的功能就是帮你实现类似上面这种定制化的参数功能.

从此一些简单定制参数可以彻底摆脱 config 配置了.


比如:

你的node.js 启动文件是 app.js

当你部署中文环境站点的时候,就可以这样  node app.js --l zh-cn

英文网站部署时  node app.js --l en


当然上面输入给启动文件的 -l 参数,你是可以在 app.js 文件中获取,然后对应加载你需要定制化的东东即可.


上面我们只是介绍它的作用,以及一个具体的例子让大家明白什么时候使用.下面开始介绍如何使用:


yargs 

npm地址:

https://www.npmjs.com/package/yargs


github地址:

https://github.com/bcoe/yargs


安装:

npm install --save yargs


定义命令交互参数:

var argv = require('yargs').argv;
if (argv.l == 'zh-cn') {
    console.log('Chinese site!');
}else if(argv.l == 'en') {
    console.log('English website!');
}


使用:

$ ./app.js --l=zh-cn
Chinese site!

$ ./app.js --l=en
English website!


app.js 文件中如何接受 --l 参数

var argv = require('yargs').argv;

if (argv.l=='zh-cn') {
    //获取参数 l 的值
    console.log('Chinese website!');
    global.langue='zh-cn';
}else if(argv.l=='en'){
    console.log('English website!');
    global.langue='en';
}

上面我们通过 argv 获取 --l 参数来判断当前要运行哪个环境.

然后使用全局变量 global.langue 来标识当前运行环境.

在后面的所有个性化定制处我们都可以直接使用全局变量 global.langue 来做判断.




回到顶部