当前位置: 首页 > news >正文

命令行指引的尝试

效果

在这里插入图片描述

步骤

首先初始化一个空的项目,然后安装一些依赖

npm init -y
npm install inquirer execa chalk ora

至于这些依赖是干嘛的,如下图所示:
在这里插入图片描述

然后再 package.json 中补充一个 bin

在这里插入图片描述

然后再根目录下新建一个 index.js , 其中的内容如下

#!/usr/bin/env node
import inquirer from 'inquirer'
import chalk from 'chalk'
import ora from 'ora'
import { createProject } from './utils/create.js'console.log(chalk.cyanBright('\n✨ Welcome to create-vueNew CLI'))const { projectName, template } = await inquirer.prompt([{type: 'input',name: 'projectName',message: 'Project name:',default: 'vueNew-app'},{type: 'list',name: 'template',message: 'Select a template:',choices: ['vue', 'vue-ts']}
])await createProject(projectName, template)

createProject 这个工具的内容如下

import { fileURLToPath } from 'url'
import { dirname } from 'path'
import path from 'path' // 确保引入了 path 模块
import ora from 'ora'
import ncp from 'ncp'const __filename = fileURLToPath(import.meta.url)
const __dirname = dirname(__filename)export async function createProject(name, template) {const spinner = ora(`Copying ${template} template...`).start()const templatePath = path.join(__dirname, `../templates/${template}`)const targetPath = path.resolve(process.cwd(), name)try {// 使用 ncp 来复制模板文件夹ncp.ncp(templatePath, targetPath, (err) => {if (err) {spinner.fail('Failed to copy template')console.error(err)return}spinner.succeed('Project created!')console.log(`\nNext steps:`)console.log(`  cd ${name}`)console.log(`  npm install`)console.log(`  npm run dev`)})} catch (err) {spinner.fail('Failed to copy template')console.error(err)}
}

然后再模拟几个 vue 的模板 ,待会儿第二步克隆的时候就是复制这里的文件

在这里插入图片描述

本地的 CLI 工具链接到全局环境

在项目目录下运行了 npm link
npm link 会把本地的 CLI 工具链接到全局环境,这样你就可以在任何地方通过命令行运行 create-vueNew

测试

在随便一个文件夹下执行 create-vueNew 就会开始执行命令了

相关文章:

  • 初一试后担忧
  • 在虚拟机中安装Linux详细教程
  • PyQt6基础_QTableWidget
  • 题目 3320: 蓝桥杯2025年第十六届省赛真题-产值调整
  • SpringCloud基于Eureka和Feign实现一个微服务系统
  • 【深度强化学习 DRL 快速实践】异步优势演员评论员算法 (A3C)
  • 豆瓣图书数据采集与可视化分析(三)- 豆瓣图书数据统计分析
  • 基于ssm的小区物业管理系统(源码+数据库)
  • vue2实现Blod文件流下载
  • AI生成创作图片操作流程一分钟学会!
  • 多层pcb工厂哪家好?
  • Python数据分析案例72——基于股吧评论数据的情感分析和主题建模(LDA)
  • Linux:进程间通信---匿名管道
  • 影视配乐神器:专业级音乐库TOP榜
  • 头歌实训之索引
  • 【金仓数据库征文】-数据库界新兴前列者,本篇带你速懂金仓数据库!
  • PHP:点击/拖动-上传图片文件目录,并存入数据库
  • vc++ 如何调用poco库
  • 深入理解C++ 中的list容器
  • python四级考试经验(考生必看)
  • 全国首例!上市公司董监高未履行公开增持承诺,投资者起诉获赔
  • 政治局会议:创设新的结构性货币政策工具,设立新型政策性金融工具,支持科技创新、扩大消费、稳定外贸等
  • 国新办发布会丨2024年市监部门查办知产领域侵权行政违法案件4.4万件
  • 大家聊中国式现代化|郑崇选:提升文化软实力,打造文化自信自强的上海样本
  • 云南昭通黄吉庆寻子29年终团聚:儿子在同事鼓励下回乡认亲
  • 神二十瞄准明日17时17分发射