node篇:构建自定义脚手架的流程(本地基础版)

67 阅读1分钟

一、创建自定义全局命令

1.1初始化脚手架项目

  • 新建code文件(文件名任取,文件中新建bin文件夹及js文件)
code
├── bin  # bin文件夹
│   └── cli.js   
  • 在code文件夹打开终端npm init初始化,构建出package.json文件 7d1fc26095ac49755d84be04af70c93.png
  • 在bin/cli.js文件中指定node来执行当前文件,加入以下代码
#!/usr/bin/env node 
  • 还是在当前code文件的终端,运行npm link 创建一个全局的链接,这个时候就创建好了全局命令mycli(解释一下为什么这里是mycli的文件名,因为在package.json中项目名是mycli) 376063464945dd30e728e16100cf154.png 35449b4ae42033bc041cdd5b819984e.png
  • 在终端执行mycli命令,执行结果如下图。(终端最好用cmd或git bash的方式,powershell的方式运行的时候会出现权限问题报错,如有报错具体可看blog.csdn.net/qq_41336022…image.png a47a096816f5d278e5a9429b99061ae.png
  • mycli命令相当于是在code/bin文件下面执行了node cli.js,如下 image.png
  • 还有一个问题,mycli命令是怎么准确知道自己要执行的是bin/cli.js文件的,如果有bin/a.js文件呢? 在npm init之后,package.json文件中会生成bin对象,bin对象中mycli的值就是mycli命令执行的文件 image.png 但是!!!!在npm link之后如果去在package.json中修改这个路径,假设改为bin/a.js,执行的还是bin/cli.js,原因可以去看一下在node文件中mycli文件中的代码,如下,mycli文件内部依然执行的bin/cli.js image.png image.png image.png

二、处理自定义全局命令参数

待补充

三、模块化拆分

待补充

四、命令问答

待补充

五、下载远程仓库

待补充

六、等待提示

待补充

七、命令行样式

待补充