Commander写自己的Nodejs命令

Commander写自己的Nodejs命令

alt Commander写自己的Nodejs命令

前言:

在使用Nodejs过程中,有很多包都支持全局安装,然后提供一个命令,然后在命令行我们就可以完成一些任务,像 express, grunt, bower, yeoman, reap, karma, requirejs 等。有时候,我们也需要自己开发这样的命令行工具。

commander.js,可以帮助我们简化命令行的开发。

文章目录:

  • commander介绍
  • commander安装
  • commander的API
  • 开发自定义的命令
  • 发布为运行命令

请查看博客文章

http://blog.fens.me/nodejs-commander/


7 回复

Commander写自己的Nodejs命令

在使用Node.js的过程中,有很多工具都支持全局安装,并且提供了一个命令行接口,使得我们在命令行中可以方便地执行一些任务,比如 expressgruntboweryeomanreapkarmarequirejs 等。有时候,我们也需要自己开发这样的命令行工具。

commander.js 是一个强大的库,它可以帮助我们简化命令行工具的开发过程。本文将详细介绍如何使用 commander.js 来创建自己的 Node.js 命令行工具。

commander介绍

commander.js 是一个用于 Node.js 的命令行参数解析器。它基于 node-optimist,并提供了更丰富的功能,如子命令、选项解析等。通过 commander.js,我们可以轻松地创建复杂的命令行界面。

commander安装

首先,我们需要安装 commander.js

npm install commander --save

commander的API

commander.js 提供了一些核心的 API,包括 program 对象,它用于定义命令行参数和选项。以下是一些常用的 API:

  • program.version(version):设置程序的版本号。
  • program.option('-o, --option [value]', 'Option description'):定义选项。
  • program.command('command-name'):定义子命令。
  • program.action(fn):当没有匹配的子命令时,执行的回调函数。
  • program.parse(process.argv):解析命令行参数。

开发自定义的命令

假设我们要创建一个名为 mycli 的命令行工具,它可以显示帮助信息、版本信息以及执行一些自定义操作。

// mycli.js
const program = require('commander');

program
  .version('1.0.0')
  .description('A custom CLI tool')
  .option('-v, --verbose', 'Enable verbose mode')
  .command('greet <name>', 'Greet a person')
  .action((cmd) => {
    console.log(`Running ${cmd}`);
  })
  .parse(process.argv);

if (program.args.length === 0) {
  program.help();
}

if (program.greet) {
  console.log(`Hello, ${program.greet}!`);
}

在这个例子中,我们定义了以下几个部分:

  • 版本号:1.0.0
  • 描述信息:A custom CLI tool
  • 选项:-v, --verbose,用于启用详细模式
  • 子命令:greet <name>,用于向某人打招呼

发布为运行命令

为了使 mycli 成为一个全局可执行的命令,我们需要将其打包为一个 npm 包,并在 package.json 中添加 bin 字段:

{
  "name": "mycli",
  "version": "1.0.0",
  "description": "A custom CLI tool",
  "main": "index.js",
  "bin": {
    "mycli": "./mycli.js"
  },
  "scripts": {
    "start": "node mycli.js"
  },
  "dependencies": {
    "commander": "^7.2.0"
  }
}

然后,我们可以通过以下命令来安装和使用该工具:

npm install -g .

现在,你可以在命令行中直接使用 mycli 命令了:

mycli greet John

这将在命令行中输出 Hello, John!

通过以上步骤,你就可以使用 commander.js 创建自己的命令行工具了。


photoshop,自己画一下

我个人认为你是cnodejs中最出名的一个了. 只是能看到你. 果断关注. 话说到你那博客能学到的东西还挺多的.

shortGun看主页挺好的,不过不在npm排行榜啊。

依赖排行榜: optimist:1858 (第4) commander:1734 (第6)

估计短时间,不会有人关注这个项目的。

准备用nodejs代替PHP做web开发,所以要全面掌握才更有把握。

写点文章,给自己打打基础。

Commander写自己的Nodejs命令

前言:

在使用Node.js的过程中,有很多工具都是通过全局安装然后在命令行中执行的,例如expressgruntbower等。这些工具通常都是使用commander.js来实现的,这使得我们也可以轻松地开发自己的命令行工具。

文章内容:

commander介绍 commander.js 是一个简单易用的库,用于创建命令行工具。它简化了命令解析的过程,使得开发者可以专注于业务逻辑。

commander安装 首先,我们需要安装commander模块。可以通过npm安装:

npm install commander --save

commander的API commander提供了几个核心的方法来添加命令和参数:

  • .command(name, description):定义子命令。
  • .option(shortFlag, longFlag, description, defaultValue):添加命令行选项。
  • .action(fn):为命令或子命令指定处理函数。

开发自定义的命令 接下来,我们通过一个简单的例子展示如何使用commander来创建一个命令行工具。

const program = require('commander');

// 添加版本信息
program.version('1.0.0')
    // 添加一个命令
    .command('init [projectName]')
    .description('initialize a new project')
    .action((projectName) => {
        console.log(`Initializing project ${projectName || 'default'}...`);
    });

// 解析参数
program.parse(process.argv);

以上代码定义了一个名为init的命令,可以接受一个可选的项目名称作为参数。如果未提供项目名称,则默认使用'default'

发布为运行命令 为了将我们的脚本发布为全局可执行命令,我们可以修改package.json文件中的bin字段,例如:

{
  "name": "mycli",
  "version": "1.0.0",
  "description": "A CLI tool created with commander.js",
  "main": "index.js",
  "bin": {
    "mycli": "./index.js"
  },
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "commander": "^7.2.0"
  }
}

之后,运行npm link即可在全局环境中使用该命令。

结论

通过commander.js,我们可以非常方便地创建功能丰富的命令行工具。以上是基础的使用方法,更多高级用法可以参考其官方文档。

回到顶部