概述
npm 不仅可以管理 nodejs 的依赖关系,它还可以用来打包和分发命令行工具!
-
创建一个新的 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 写命令行工具所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复