为什么要坚持写作?写作就是求甚解的过程。
上一章手把手教你使用nodejs编写cli(命令行)和大家分享了通过 fs
模块读写ejs
模板的方式创建 CLI
工具,
这一章我们来讲解如何将远程仓库的代码做为 CLI 工具的代码模板。
步骤
其实 CLI 工具使用远程仓库代码作为代码模板无非就是一下步骤
1. 拉取远程仓库代码
2. 修改项目名称
3. 重新初始化本地仓库 .git
4. 使用 fs + ejs 重新写入部分文件
实现
上一章讲了通过 inquirer
交互式命令行拿到了用户的选择、使用 execa 子进程管理工具来安装依赖、操作git等
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))