🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 写一个自己的脚手架/CLI https://juejin.cn/post/6966119324478079007 https://juejin.cn/post/6932610749906812935 脚手架使用的功能 >* 用户输入命令,准备创建项目。 >* 脚手架解析用户命令,并弹出交互语句,询问用户创建项目需要哪些功能。 >* 用户选择自己需要的功能。 >* 脚手架根据用户的选择创建 `package.json` 文件,并添加对应的依赖项。 >* 脚手架根据用户的选择渲染项目模板,生成文件(例如 `index.html`、`main.js`、`App.vue` 等文件)。 >* 执行 `npm install` 命令安装依赖。 脚手架 ---- **三方依赖库** >commander: 命令行自定义指令 inquirer:提供问答式的命令行交互方法,可以收集获取命令行的回答的结果,然后进行操作 chalk:命令行多彩打印 cross-spawn:跨平台 shell 工具,比如安装依赖 download-git-repo:下载远程模板 ora: 命令行 loading 动效 ## **初始化搭建** ```js // 新建项目目录 my-node-cli mkdir my-node-cli cd my-node-cli npm init # 生成 package.json 文件 touch cli.js # 新建 cli.js 文件 // 在 package.json 文件中指定入口文件为 cli.js "name": "my-node-cli", "version": "1.0.0", "main": "cli.js", "bin": "cli.js", // 在cli.js文件的开头加入 #! /usr/bin/env node console.log('my-node-cli working~') // 链接到全局 npm link // 在命令行中输入 my-node-cli 执行一下 ``` `#!`这个符号通常在第一行开头中出现,用于指明这个脚本文件的解释程序。 /usr/bin/env就是告诉系统可以在PATH目录中查找, 配置#!/usr/bin/env node, 就是解决了不同的用户node路径不同的问题,让系统动态的去查找node来执行你的脚本文件。 ## **增加基本功能** - 生成对应的文件 安装 ejs 模版引擎将用户输入的数据渲染到模版文件上 `npm install ejs --save # yarn add ejs --save` - 处理用户命令 使用 commander 注册了一个 create 命令,并设置了脚手架的版本和描述 ```js #!/usr/bin/env node const program = require('commander') const create = require('../lib/create') program .version('0.1.0') .command('create <name>') .description('create a new project') .action(name => { create(name) }) program.parse() ``` 将这段代码保存在项目下的 bin 目录,并命名为 mvc.js。 在 package.json 添加`"bin": { "mvc": "./bin/mvc.js" }`,再执行 npm link,将 mvc 注册成全局命令 `mvc create demo`(实际上是 `node ./bin/mvc.js create demo`) ## 发布项目 第一步,在 git 上建好仓库 第二步,完善 package.json 中的配置 第三步,使用 npm publish 进行发布,更新到时候,注意修改版本号