我是靠谱客的博主 糊涂冥王星,最近开发中收集的这篇文章主要介绍用 nodejs 写命令行工具,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

npm 不仅可以管理 nodejs 的依赖关系,它还可以用来打包和分发命令行工具!

  1. 创建一个新的 npm 项目:

    $ npm init

给应用起一个名字:ser,其他输入项都直接回车,用默认内容。最后,创建了文件 package.json:

{
  "name": "ser",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC"
}

创建文件 index.js:

#!/usr/bin/env node

console.log('Hello World!')

为了生成可执行的命令,现在修改 package.json,增加 bin 属性:

"bin": {
  "ser": "./index.js"
}

接下来就可以安装了:

$ sudo npm install -g
$ ser
Hello World!

看看都安装了什么:

$ which ser
/usr/local/bin/ser
$ readlink /usr/local/bin/ser
../lib/node_modules/ser/index.js

在当前目录下,查看:

$ sudo npm link
npm WARN ser@1.0.0 No description
npm WARN ser@1.0.0 No repository field.

up to date in 1.409s
found 0 vulnerabilities

/usr/local/bin/ser -> /usr/local/lib/node_modules/ser/index.js
/usr/local/lib/node_modules/ser -> /home/hu/tmp2/t/t/tmp

如果要卸载,请用下面的命令:

$ sudo npm uninstall -g

当程序满意之后,你可以使用 npm publish 命令,将其发布到 npm 公共库(public npm registry)。然后,别人就可以通过下面的命令来安装你的脚本程序:

$ npm install -g ser

命令行参数

虽然你可以使用 process.argv 来获取并处理命令行参数,但是这种标准化的操作怎能少得了成熟库的支持?推荐使用 commander,使用下面的命令来安装:

$ npm install --save commander

下面是使用例子:

#!/usr/bin/env node

const program = require("commander")

program
  .arguments('<file>')
  .option('-u, --username <username>', 'The user to authenticate as')
  .option('-p, --password <password>', 'The user's password')
  .action(function(file) {
    console.log('user: %s pass: %s file: %s', program.username, program.password, file);
  })
  .parse(process.argv)

执行命令:

$ ser -u MYNAME -p MYPASS MYARG
user: MYNAME pass: MYPASS file: MYARG

commander 还贴心的写好了 help:

$ ser --help
Usage: ser [options] <file>

Options:
  -u, --username <username>  The user to authenticate as
  -p, --password <password>  The user's password
  -h, --help                 output usage information

这里还有一个使用 commander 的例子:https://blog.csdn.net/henryhu712/article/details/88708106

nvm 安装方式

如果你装了 nvm,则全局安装不需要用到 sudo:

npm install -g
/home/ubuntu/.nvm/versions/node/v10.14.2/bin/enmsg -> /home/ubuntu/.nvm/versions/node/v10.14.2/lib/node_modules/enmsg/main.js
+ enmsg@1.0.0
added 1 package from 1 contributor in 0.217s

最后

以上就是糊涂冥王星为你收集整理的用 nodejs 写命令行工具的全部内容,希望文章能够帮你解决用 nodejs 写命令行工具所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部