前言

       CLI(command-line interface 命令行界面)是指在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。

  NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:

  •允许用户从NPM服务器下载别人编写的第三方包到本地使用。

  •允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。

  •允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用

       前置准备

       1. 开发环境

  • Node 环境 (必须)
  • VS Code 开发工具 (非必须,你可以使用你喜欢的开发工具)

       1.1 安装 Node

       请安装 Node(>v6.5),这还是很简单的,访问 Node 官网 下载推荐版本,当前应该是 8.11.1。

       之后的安装全是下一步就可以了。

       1.2 安装 VS Code

       同样访问 Visual Studio Code 官网,下载安装即可。

       2. 注册 NPM 账号

       访问 NPM 官网 ,点击 Sign up 字样,输入邮箱用户名密码就可以完成创建了,注意这里的 Username 和 Password 将用于后续登录和发布包。Public Email 用于接收推送邮件。

     详细操作

  1. 创建 NPM 项目

  1.1 新建一个空文件夹

  运行命令行,切换到你想存放文件的目录,执行新建文件。如:

1

2

3

4

C:> cd D:/

D:> mkdir jr-web

D:> cd jr-web

D:\jr-web>

       1.2 新建一个 NPM 项目

       在刚刚的目录下执行 npm init,其中注释为我添加的说明。

1

2

3

4

5

6

7

8

9

10

11

12

D:\jrweb> npm init

This utility will walk you through creating a package.json file.

It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields

and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and

save it as a dependency in the package.json file.

Press ^C at any time to quit.

package name: (jr-web) jr-web

程序会停在这里,让你输入项目名称,这个名称也是后面要上传到云上的包名,所以不允许和现有包名类似或者重名,所以你们可以像我这样在后面加上自己的名字,这是一个学习 demo,所以不需要太纠结于命名,后续你们开发自己的工具时,再认真想一个名字就好。

1

version: (1.0.0)

这里需要输入程序的初始版本号,默认值直接回车就可以了。

展开源码

1

description: 这里写的是简介,jr-web,编写一个简单的 CLI 工具

这里写上简介.

1

entry point: (index.js)

这里是程序的主入口文件,我们先选默认值,后续这些值都是可以修改的。用于发布插件,我们这里是编写一个工具,会使用到的是 bin,详见下文。

git repository:

包存放的 git 地址,默认为空。

1

2

keywords: 名字、web、前端

author: lee

输入关键词和作者。

1

license: (ISC) MIT

添加开源许可证,MIT,指可随意使用和修改.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

About to write to D:\gitchat-oni\package.json:

{

  "name""gitchat-oni",

  "version""1.0.0",

  "description""这里写的是简介,jr-web,编写一个简单的CLI工具",

  "main""index.js",

  "scripts": {

    "test""echo \"Error: no test specified\" && exit 1"

  },

  "keywords": [

    "名字",

    "web",

    "前端"

  ],

  "author""xiaohuoni",

  "license""MIT"

}

Is this ok? (yesyes

这里确认创建,一个 NPM 项目就创建成功了。

2. 配置程序入口

我们使用 vscode,打开 d:/jr-web,当前的目录结构是:

1

├── package.json

因为本次教程是为了给我们演示,如何构建一个工具,而不是插件,所以我们打开 package.json 做一点点的修改。

1

2

3

4

5 - "main""index.js",

5 + "bin": {

6 +    "onitest""./bin/jr-web"

7 + },

前面数字表示行数,+ 表示增减,- 表示删除。这里的 onitest,是我们实际使用工具的时候执行的命令。

小结:如果是插件的话,入口文件就是 main 所定义的;如果是工具的话,入口文件就是 bin 所定义的。

未完待续......

参考文件:

NPM 使用介绍 | 菜鸟教程

20分钟掌握前端编写 CLI 工具_codebay118的博客-CSDN博客

构建一个 CLI 工具相关推荐

  1. 手把手带你撸一个cli工具

    你有没有遇到过在没有vue-cli.create-react-app这样子的脚手架的时候一个文件一个文件的去拷贝老项目的配置文件.最近,笔者就在为组里的框架去做一套基本的cli工具.通过这边文章,笔者 ...

  2. 20分钟掌握前端编写 CLI 工具

    什么是CLI CLI(command-line interface 命令行界面)是指在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执 ...

  3. 你没见过的Burpsuite骚操作——拦截CLI工具的流量

    介绍 Burp Suite,mitmproxy都是非常有用的HTTP代理工具.它们不仅仅用于渗透测试和安全研究,也用于开发.测试和API研究上.实际上,我自己现在更多的是用Burp来进行调试和学习,而 ...

  4. 通过CLI工具构建一个Vue.js程序

    使用CLI工具之前需要用户对Node.js和相关构建工具有一定程序的了解. CLI是构建一个快速而规范的Vue.js项目的重要工具.为了让读者能够快速地学会使用CLI工具,下面直接使用CLI进行项目的 ...

  5. SDKMAN - 一个用于轻松管理多个软件开发工具包的CLI工具

    转载来源:https://www.ostechnix.com/sdkman-a-cli-tool-to-easily-manage-multiple-software-development-kits ...

  6. 不借助idea开发工具构建一个Javaweb项目

    不借助idea开发工具构建一个Javaweb项目 目录结构 webappsroot|----------WEB-INF|----------classes(存放字节码)|----------lib(存 ...

  7. 如何构建一个在线绘图工具:Feakin 是如何设计与构建的?

    高中,读过几本 3D 图形编程相关的书.怎么说呢,自那以后,图形学相关的东西,都不在我的兴趣范围里了.直到最近,我重新燃起了一点兴趣: 架构治理工具 ArchGuard 依赖于「图即代码」,用于生成架 ...

  8. Nest的基本概念,以及如何使用Nest CLI来构建一个简单的Web应用程序

    Nest是一个用于构建高效.可扩展的Node.js服务器端应用程序的框架.它是基于Express.js构建的,并且提供了多种新特性和抽象层,可以让开发者更加轻松地构建复杂的应用程序. 本文将介绍Nes ...

  9. 使用node.js构建命令行工具

    工具说明 inquirer.js:一个封装了常用命令行交互的node.js模块,通过该模块可以很方便地构建一个新的命令行应用. shell.js:跨平台的unix shell命令模块. Node版本: ...

  10. xampp去运行php文件_从0开始构建一个属于你自己的PHP框架

    如何构建一个自己的PHP框架 为什么我们要去构建一个自己的PHP框架?可能绝大多数的人都会说"市面上已经那么多的框架了,还造什么轮子?".我的观点"造轮子不是目的,造轮子 ...

最新文章

  1. R语言使用caret包对GBM模型进行参数调优实战:Model Training and Parameter Tuning
  2. docker,mysql,wordpress搭建个人博客
  3. 【白话机器学习】算法理论+实战之PCA降维
  4. hdu 1023 大数 卡特兰数
  5. python 画布 保存_Python Tkinter使用PIL将画布保存为图像
  6. 大四课程设计之基于RFID技术的考勤管理系统(四)Qt界面设计
  7. ubuntu man命令彩色高亮显示
  8. mybatis接口中的方法重载_MyBatis底层实现原理: 动态代理的运用
  9. 数字化定量分析_制造业走向数字化:企业以提高劳动生产率来优化供应链管理...
  10. 杭电(杭州电子科技大学)可视计算基础大作业:绝地求生吃鸡预测
  11. sqlmap挂马命令
  12. 华师大计算机在线作业,华东师范大学计算机考研复试机试习题
  13. 码流格式: Annex-B, AVCC(H.264)与HVCC(H.265), extradata详解
  14. torch.bmm()和torch.matmul()函数的用法和区别,矩阵相乘
  15. x must be 1d
  16. tinymce自动实现斑马纹表格
  17. 在html文件中url称之为什么,html+css网页设计复习题
  18. Office 文档解析 文档格式和协议
  19. 淘宝优惠券查询API接口
  20. 集线器、网桥、交换机

热门文章

  1. airflow 在 docker 中的安装与使用
  2. Rust游戏引擎Bevy初探
  3. 图灵交互设计丛书《简约至上.交互式设计四策略》
  4. TapTap排行榜能客观显示游戏的受欢迎程度吗?
  5. 是时候让《武林外传》教你反内卷了
  6. AtCoder Beginner Contest 164 E Two Currencies【最短路】
  7. 数据流程分析【停车场管理系统】
  8. SWUST OJ1132: 机器人收集硬币
  9. 游戏设计模式——观察者模式(Observer)
  10. 进阶篇:5.1.1)确认公差分析的目标尺寸和判断标准