0.0.1 • Published 2 years ago

@sysuke/cli v0.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

创建文件阶段,构建,集成webpack阶段,运行项目阶段。

终端命令行交互

node 修改 bin

期望像vue-cli那样 ,通过自定义的命令行vue create,开始创建一个项目,首先能够让程序终端识别我们的自定义指令,我们首先需要修改bin。

比如

sysuke create

希望的终端能够识别sysuke ,然后通过 sysuke create创建一个项目。实际上流程大致是这样的通过sysuke可以指向性执行指定的node文件。接下来我们一起分析一下具体步骤。

执行终端命令号,期望结果是执行当前的node文件。

npm.io

如上图所示我们在终端执行命令行的时候,统一走bin文件夹下面的 cli.js文件。

cli.js文件

#!/usr/bin/env node
'use strict';
console.log('hello,world')

然后在package.json中声明一下bin。

{
  "name": "@sysuke/cli",
  "version": "1.0.0",
  "description": "",
  "main": "index.ts",
  "bin": {
    "sysuke": "./bin/cli.js"
  }
}

为了在本地调试,使用 pnpm link --global,一定是在cli项目的目录下跑

然后在任意目录下,运行sysuke, 打印hello,world即成功。

接下来做的是让node文件(demo项目中的cli.js)能够读懂我们的终端命令。比如说 sysuke create 创建项目; sysuke start运行项目; sysuke build 打包项目;为了能够在终端流利的操纵命令行 ,我们引入 commander 模块。

commander -nodejs终端命令行

pnpm add commander -D
# or
pnpm add commander --filter="@sysuke/cli" -D 
# 为了能在终端打印出花里胡哨的颜色,我们引入chalk库。
pnpm add chalk@4.1.0 -D
pnpm add chalk@4.1.0 --filter="@sysuke/cli" -D 

chalk版本问题

https://stackoverflow.com/questions/70309135/chalk-error-err-require-esm-require-of-es-module

接下来需要我们用 commander 来声明的我们终端命令。

inquirer模块命令行交互

pnpm add inquirer -D
pnpm add inquirer --filter="@sysuke/cli" -D