[JS] 自定义Node指令和commander插件

自定义Node指令和commander插件

自定义Node指令

参考博客:http://t.csdn.cn/D3qui

  1. 新建一个bin文件夹,新建一个文件showtime.js
const now = new Date();
console.log(`现在的时间是: ${now.toLocaleTimeString()}`);
  1. npm init
    这个时候需要你输入一些必要的信息
  2. npm link
  3. 在任意一个文件夹打开powershell,输入showtime,就能看见打印了,说明link成功。

commander插件

  1. 添加option:
#!/usr/bin/env node

//commander插件,用于解析命令行参数
const { program } = require('commander');

//当在终端使用 showtime -s 或者 showtime --save时会显示save something
//这个方法就是添加帮助项,表示传递的参数,使用时应该这样使用 showtime -s xxxx 或者 showtime --save xxxx
program.option('-s --save ', 'save something');

在命令行里输入showtime -s就会

error: option '-s --save ' argument missing
  1. 用action来执行
#!/usr/bin/env node

//commander插件,用于解析命令行参数
const { program } = require('commander');

program
    .command('show')
    .description('显示时间')
    .action(() => {
        const now = new Date();
        console.log(`现在的时间是: ${now.toLocaleTimeString()}`);
    });

program.parse(process.argv);

输出:

PS D:\MyScript> showtime show
现在的时间是: 下午3:34:26
  1. 关于process.argv

process.argv是一个包含命令行参数的数组。在Node.js中,当我们在命令行中运行一个脚本时,可以在命令行中传递参数,这些参数会被存储在process.argv数组中。

process.argv数组的前两个元素是固定的,分别是Node.js的可执行文件路径和当前脚本的文件路径。从第三个元素开始,就是命令行中传递的参数。

例如:

console.log(`process.argv[0]: ${process.argv[0]}`)
console.log(`process.argv[1]: ${process.argv[1]}`)
console.log(`process.argv[2]: ${process.argv[2]}`)
console.log(`process.argv[3]: ${process.argv[3]}`)

输出:(中间的文件夹名用bala...bala省略了)

process.argv[0]: D:\bala...bala\nodeTool\node.exe
process.argv[1]: C:\Users\bala...bala\showTime.js
process.argv[2]: show
process.argv[3]: undefined
  1. 关于program.parse(process.argv)

program.parse(process.argv)是commander库中的一个方法,用于解析命令行参数。在使用commander库时,我们通常会定义一组命令、选项和参数,然后使用program.parse(process.argv)方法解析命令行参数,根据参数执行不同的逻辑。

  1. 关于action

action 是 commander 包中 command 对象的一个方法,用于定义当命令被调用时将执行的函数。

  1. 关于cwd

要获取程序运行时的当前工作目录,可以使用 Node.js 的 process.cwd() 方法。这个方法返回一个字符串,表示当前工作目录的路径。

console.log(`process.cwd: ${process.cwd()}`)

输出:

process.cwd: D:\bala...bala

你可能感兴趣的:(javascript,前端,npm)