之前使用过一些全局安装的NPM包,安装完之后,可以通过其提供的命令,完成一些任务。比如Fis3,可以通过<代码> Fis3服务器启动代码>开启fis的静态文件服务,通过fi <代码> s3发布代码>开启文件编译与发布;还有vue-cli,可以通过<代码> vue init webpack我的项目> 代码来初始化vue + webpack的项目基础配置。最近有一个需求,需要写一个类似vue-cli的NPM包,通过命令行操作实现项目初始配置,所以就查看了相关资料,学习了一下如何使用节点来生成自己的命令。
命令的目标:在当前目录下开启一个静态文件服务,端口号为8085
<强> 1。创建目录强>
构成命令的基础是需要一个命令文件web.js和package.json配置文件,执行以下命令:
mkdir node-commander #美元创建一个文件夹 $ cd node-commander,,mkdir本 美元npm init #初始化package.json文件& lt; br> $ cd箱,,联系网络。js #创建命令文件
<强> 2。命令文件强>
# !/usr/bin/env节点 var=需要表达(表达); var=process.cwd路径(); 函数运行(argv) { 如果(argv [0]===' v ' | | argv[0]===姹?{ 控制台。日志(版本1.0.0); } else if (argv [0]===? h”| | argv [0]===猦elp) { console.log(“用法:\ n”); 控制台。日志(' - v -版本(显示版本)') } else if (argv [0]===' s ' | | argv[0]===笨嫉?{ 应用var=new表达(); app.use(/静态,express.static(路径)); app.listen(8085年,函数(){ 控制台。日志(服务器在端口8085上启动); }); } } 运行(process.argv.slice (2));>之前文件的头部务必加入<代码> # !/usr/bin/env节点> 代码这行代码,这里表示使用节点作为脚本的解释程序,节点的路径通过env来查找,可以避免节点安装路径不一带来的问题。
其过程中为节点进程中的全局变量,process.argv为一数,组数组内存储着命令行的各个部分,<代码> argv[0]> 代码为节点的安装路径,<代码> argv[1]> 代码为主模块文件路劲,剩下为子命令或参数,如下:
节点。/bin/网络。js a b c #过程。argv的值为(“/usr/地方/bin/节点”、“/web/路径。js”、“a”、“b”、“c”)<强> 3。命令配置强>
在package.json文件中添加本字段:
"本":{ “网络”:“。/bin/web.js” },本字段的作用:当安装npm包时,npm将添加一条命令<代码>/usr/地方/bin/web> 代码,web命令软连接到web.js文件。
<强>(1)采用安装方法强>
进入npm包目录下,执行全局安装,根据package.json中本的配置,为全局命令创建软连。
# sudo npm安装。- g/usr/local/bin/web→/usr/local/lib/node_modules/cli-demo/bin/web.js/usr/local/lib ”——cli-demo@1.0.0 …查看网络命令
#这网络/usr/local/bin/web执行网络命令
#网络——开始 服务器在端口8085上启动<强>(2)采用npm链接方法强>
<代码> 代码> npm联系方法创建了两个软连,命令与命令文件的软连,全局包与实际包文件的软连。
# sudo npm链接/usr/local/bin/web→/usr/local/lib/node_modules/cli-demo/bin/web.js/usr/local/lib/node_modules/cli-demo→/用户/百度/hwm/home/演示/节点/node-commander接下来可以按照方法(1)进行操作了。
发布命令包
通过<代码> npm发布代码>进行发布,前提是有npm帐号。如何操作可以查看npm官方文档。
本文是通过原生node . js来开发命令工具,而<代码> vue-cli> 代码是采用commander.js来简化命令工具开发,关于commander.js的使用方法,将在下一篇文章中介绍。
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对的支持。
利用node . js制作命令行工具方法教程(一)