使用 NPM 发布和使用 CLI 工具

本文是 Node.js 使用浅谈的三件套之一工具篇,主要讲解了 NPM 命令行接口(CLI)工具发布的教程,适合阅读的对象包括:

不熟悉 NPM 工具 和 Node 脚本
不知道如何制作通用的 CLI 工具
只会简单的发布和使用 NPM 包

温馨提示:这是一篇 2 年前写的相对老旧知识体系的旧文章,只用于新人扫盲。完整的源代码仓库地址 ziyi2/npm-cli-package。

服务篇可查看 基于 Express 应用框架的技术方案选型浅谈。
Node 脚本
在项目中我们经常会用到一些 Node 脚本命令来简化开发的工作量,例如 Element 组件库的 NPM 脚本命令 build:file (使用脚本生成 Webpack 构建的入口源文件)。
简单的 Node 脚本命令可以解决当务之急,但是如果实现的功能相对复杂,并且存在多人复用的情况(例如绑定脚手架或多人拷贝复用),可能会产生以下问题:

维护性差 (历史功能 /依赖 / 版本等维护)
污染项目文件夹
增加开发沟通成本

温馨提示:作为面试官往往能看到简历中写着开发或维护了 xxx 组件,此时会简单追问该组件如何做到多人复用,会有一些面试者回答手动拷贝…

为了解决 Node 脚本命令产生的上述问题,可以采用 NPM 发包的形式实现通用的 CLI 工具包。
NPM 包管理器
NPM 包管理器允许用户将自己编写的通用包或 CLI 工具上传到 NPM 服务器,其他开发人员只需要下载并安装该 CLI 工具到本地即可使用。
需要注意的是 NPM 包的安装可以分为本地和全局两种方式。采用本地安装可以将发布的 CLI 工具加入到项目的开发态依赖列表。采用全局方式进行安装会将 NPM CLI 工具的命令链接到全局执行环境。

温馨提示:采用本地安装更多的可能是在项目中配合 NPM 脚本使用,并且可固化工具的功能版本。采用全局安装更多的是进行类似初始化的功能,例如 vue-cli、create-react-app、express-generator 等,此时 Node 脚本不会植入到项目中,而是存放在操作系统的用户文件夹中。

大家可能常见的 CLI 工具如下:

npm/cli
babel/cli
webpack/webpack-cli
vuejs/vue-cli
commitizen/cz-cli

接下来将详细讲解如何构建、发布、安装和使用一个简单的 CLI 工具。
CLI 工具
构建
首先新建 NPM CLI 工具的项目文件,执行 npm init 命令创建 package.json 描述文件,需要输入项目名称、版本、描述、项目入口文件(发布 CLI 工具并不需要 main 字段信息,该信息主要用于发布库包)、作者信息等:
AppledeMacBook-Pro:npm-cli-package ziyi2$ 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: (npm-cli-package)
version: (1.0.0)
description: NPM CLI 工具的发布和使用
entry point: (index.js)
test comm

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值