手把手教你使用nodejs编写cli(命令行)——拉取远程仓库作为代码模板

Posted 五虎战画戟

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手把手教你使用nodejs编写cli(命令行)——拉取远程仓库作为代码模板相关的知识,希望对你有一定的参考价值。

为什么要坚持写作?写作就是求甚解的过程。

上一章手把手教你使用nodejs编写cli(命令行)和大家分享了通过 fs 模块读写ejs 模板的方式创建 CLI 工具,
这一章我们来讲解如何将远程仓库的代码做为 CLI 工具的代码模板


步骤

其实 CLI 工具使用远程仓库代码作为代码模板无非就是以下步骤

1. 拉取远程仓库代码
2. 修改项目名称
3. 重新初始化本地仓库 .git
4. 使用 fs + ejs 重新写入部分文件


实现

上一章讲了通过 inquirer 交互式命令行拿到了用户的选择、使用 execa 子进程管理工具来安装依赖、操作git等,我们依旧使用execa管理子进程

const config = await question()

// 创建的项目路径
const getProjectPath = () => 
  return `./$ config.packageName `


git clone 拉取远程仓库代码

await execa(`git`, ['clone', 'https://gitee.com/yanhuakang/my-first-npm-lib.git'],  cwd: './', )

修改项目名称

await execa(`mv`, ['my-first-npm-lib', config.packageName],  cwd: './', )

重新初始化本地仓库 .git

await execa(`rm`, ['-rf', `$getProjectPath()/.git`],  cwd: './', )
await execa(`cd`, [config.packageName],  cwd: './', )
await execa(`npm`, ['init'],  cwd: './', )
await execa(`git`, ['add', './'],  cwd: getProjectPath(), )
await execa(`git`, ['commit', '-m', 'init'],  cwd: getProjectPath(), )

使用 fs + ejs 重新写入部分文件

如果你想拉取完远程代码仓库后,改变一些远程仓库某些文件的配置,我们需要将对应的代码文件写入到我们的 CLI 项目的 ejs 模板中,然后在拉取完成远端代码后删除原文件后再写入对应的文件即可。如修改启动 serve 的端口号,详见 手把手教你使用nodejs编写cli(命令行)

import webpackConfig from './template/webpackConfig/index.js'

await execa(`rm`, ['-rf', `./$config.packageName/webpack.config.js`],  cwd: getProjectPath(), )
fs.writeFileSync(`$getProjectPath()/webpack.config.js`, webpackConfig(config))

以上是关于手把手教你使用nodejs编写cli(命令行)——拉取远程仓库作为代码模板的主要内容,如果未能解决你的问题,请参考以下文章

手把手教你使用nodejs编写cli(命令行)

手把手教你如何安装使用webpack vue cli

手把手教你搭建 vue 环境

手把手教你搭建 vue 环境

[转]手把手教你搭建Hive Web环境

话编程 |手把手教你开发docker一样的命令行