加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

十分钟通过 NPM 创建一个命令行工具

发布时间:2020-12-14 23:57:41 所属栏目:资源 来源:网络整理
导读:p class="article-title"大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具。 div class="article-content" data-v-5fb28c70="" data-id="5c58ec07f265da2dd1683f81" 写了一个小 demo,用于代替? touch ?的创建文件命令? to

<p class="article-title">大过年的,要不要写点代码压压惊?来花十分钟学一下怎么通过 NPM 构建一个命令行工具。


<div class="article-content" data-v-5fb28c70="" data-id="5c58ec07f265da2dd1683f81">

写了一个小 demo,用于代替?touch?的创建文件命令?touchme?,可以创建自带“佛祖保佑”注释的文件。效果如下:?

命令可以带有一个参数,选择注释的符号

现在,开始撸代码 ~

首先创建一个文件夹,我起名字?create-file-cli?然后通过?npm init?命令创建?package.json?文件。

$ create-----y

然后修改?package.json?添加一个?bin?字段,定义一个?touchme?命令,并指定该命令执行的文件。

"name": "create-file-cli""version": "1.0.0""description": """main": "index.js""scripts""test": "echo "Error: no test specified" && exit 1""bin""touchme": "bin/touchme.js""keywords""author": """license": "ISC"

接下来实现?bin/touchme.js?,要用到???-- node.js 命令行接口的完整解决方案。看不懂英文文档还有贴心的中文?。

bin/touchme.js?如下

#!/usr/bin/env node = require('commander'= require('../lib/generate-file'program
<span style="color: #008000;">//
<span style="color: #008000;"> 版本信息

.version('0.0.4','-v,--version'<span style="color: #000000;">)
<span style="color: #008000;">//<span style="color: #008000;"> 用法说明
.usage('<file ...> [options]'<span style="color: #000000;">)
<span style="color: #008000;">//<span style="color: #008000;"> 选择名 选项描述 默认值
<span style="color: #008000;">//<span style="color: #008000;"> 选项 可以带有一个参数 可以通过 program.copy 获取该选项信息
<span style="color: #008000;">//<span style="color: #008000;"> 如果没有参数 该值为 true
.option('-c,--copy ','copy file and add comment'<span style="color: #000000;">)
.option('-H,--hashtag',comment by '#'<span style="color: #000000;"&gt;)
.option('-s,--slash',comment by '/'<span style="color: #000000;"&gt;)
.parse(process.argv);

<span style="color: #0000ff;">function<span style="color: #000000;"> resolve(program) {
<span style="color: #008000;">//<span style="color: #008000;"> 没有匹配任何选项的参数会被放到数组 args 中
const { copy,hashtag,slash,args } =<span style="color: #000000;"> program;
<span style="color: #0000ff;">if (!<span style="color: #000000;">args.length) {
console.log('Please input filename.'<span style="color: #000000;">);
<span style="color: #0000ff;">return<span style="color: #000000;">;
}
<span style="color: #0000ff;">if (copy === <span style="color: #0000ff;">true<span style="color: #000000;">) {
console.log('You should copy at least one file.'<span style="color: #000000;">);
<span style="color: #0000ff;">return<span style="color: #000000;">;
}
let type = 'star'<span style="color: #000000;">;
<span style="color: #0000ff;">if (slash) type = 'slash'<span style="color: #000000;">;
<span style="color: #0000ff;">if (hashtag) type = 'hashtag'<span style="color: #000000;">;
<span style="color: #0000ff;">for (let i = 0; i < args.length; i++<span style="color: #000000;">) {
gen(args[i],copy,type);
}
}

resolve(program);

具体?lib/generate-file.js 实现见?https://github.com/G-lory/create-file-cli/ 就是简单的创建一个文件并写入注释。

通过 option 定义命令选项并可定义参数。

通过 program 可以获取命令行输入的参数信息。

现在功能写完了,剩下的事情就是发布了。首先要到?https://www.npmjs.com 查找一下自己的包名有没有人已经发布了,如果有的话,你需要先修改包名。然后在?https://www.npmjs.com 注册一个账号。记住自己的账号密码和邮箱后,回到命令行。

$ npm as ... on https:

注意登录成功后显示的是 https://registry.npmjs.org/ 很多同学设置了淘宝的镜像,显示的就不是这个地址,那么发布之前要改回来。

$ npm config set registry=http:

然后就可以发布包了。

$ npm publish

如果之后有修改,更改一下?package.json?中的版本号 然后再次执行?npm publish?即可。

发布后可以去 npm 网站搜索一下自己的包。然后就是安装测试一下功能。

全局安装一下

$ npm create--cli -g

然后就可以使用?touchme?命令创建文件了。也可以使用?touchme -h?来查看帮助。

一个命令行工具就创建成功啦~~

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读