Node.js 用途很广,常用来开发服务、桌面应用等被开发者熟知,Node.js 还有另外一个非常实用的场景 - 命令行应用。
Command Line Interface,顾名思义是一种通过命令行来交互的工具或者说应用。SPA应用中常用的如create react app, @tarojs/cli, angular-cli, node.js开发搭建express-generator,orm框架sequelize-cli,还有我们最常用的webpack,npm等。他们是web开发者的辅助工具,旨在减少低级重复劳动,专注业务提高开发效率,规范develop workflow。
我们可以从工作中总结繁杂、有规律可循、或者简单重复劳动的工作用CLI来完成,只需一些命令,快速完成简单基础劳动。以下是我对现有工作中的可以用CLI工具实现的总结举例:
总体而言就是一些快捷的操作替代人工重复劳动,提升开发效率。
npm scripts也可以实现开发工作流,通过在package.json 中的scripts对象上配置相关npm 命令,执行相关js来达到相同的目的;
但是cli工具与npm scripts相比有什么优势呢?
npm scripts是某个具体项目的,只能在该项目内使用,cli可以是全局安装的,多个项目使用;
commander.js 参数解析为选项和命令参数inquire.js 交互命令输入插件chalk.js: 美化命令行的模块ora: Elegant terminal spinnerncp: 异步的拷贝文件,包含空文件夹recursive-readdir: 递归地列出目录和子目录下的所有文件,不包含目录本身。shelljs: Unix shell commands for Node.jslog-symbols: 打印日志的特殊标志download-git-repo: Download and extract a git repository (GitHub, GitLab, Bitbucket) from nodeglobal-prefix: 获取 npm 全局安装的前缀exec-sh: 执行 shell 命令转发所有 stdio 流,比 shelljs exec 命令好用wml: wml 侦听某个文件夹中的更改(使用 watchman),然后将更改的文件复制到另一个文件夹中。cmd-open: 扩展 Windows 命令 openshx: shx is a wrapper around ShellJS Unix commands, providing an easy solution for simple Unix-like, cross-platform commands in npm package scripts.