inquirer介绍及配合lerna在Vue中使用示例
目录
- 安装
- 基本用法
- 使用多个提示框
- 动态选择(动态选项)
- 表单式输入
- 配合lerna在Vue中使用示例
Inquirer 是一个用于创建交互式命令行工具的 Node.js 库,常用于收集用户输入。它提供了多种类型的提示框,可以用于创建交互式应用程序(比如 CLI 工具),并且支持各种类型的输入,包括文本、选择框、确认框、密码输入框等。这个库在开发过程中非常有用,尤其是在构建脚本和自动化工具时。
安装
首先,你需要安装 inquirer:
npm install inquirer
基本用法
- 文本输入框(input)
input 提示允许用户输入一段文本。
const inquirer = require('inquirer');inquirer.prompt([{type: 'input',name: 'username',message: 'Enter your username:'}
]).then(answers => {console.log(`Hello, ${answers.username}!`);
});
上面的代码会显示一个提示框,要求用户输入他们的用户名。
- 选择框(list)
list 提示允许用户从一组选项中选择一个。
inquirer.prompt([{type: 'list',name: 'color',message: 'Choose your favorite color:',choices: ['Red', 'Green', 'Blue']}
]).then(answers => {console.log(`Your favorite color is ${answers.color}`);
});
此代码会显示一个选择框,允许用户选择一个颜色。
- 多选框(checkbox)
checkbox 提示允许用户从多个选项中选择一个或多个。
inquirer.prompt([{type: 'checkbox',name: 'fruits',message: 'Select your favorite fruits:',choices: ['Apple', 'Banana', 'Cherry', 'Date']}
]).then(answers => {console.log(`You selected: ${answers.fruits.join(', ')}`);
});
在这个例子中,用户可以选择多个水果。
- 确认框(confirm)
confirm 提示要求用户确认某个操作(例如“是”或“否”)。
inquirer.prompt([{type: 'confirm',name: 'proceed',message: 'Do you want to proceed?'}
]).then(answers => {if (answers.proceed) {console.log('Proceeding...');} else {console.log('Operation cancelled.');}
});
- 密码输入框(password)
password 提示框会隐藏用户输入(用于收集密码等敏感信息)。
inquirer.prompt([{type: 'password',name: 'password',message: 'Enter your password:'}
]).then(answers => {console.log('Password entered:', answers.password);
});
使用多个提示框
你可以同时使用多个不同类型的提示框,通过将它们组合到 prompt 数组中。
inquirer.prompt([{type: 'input',name: 'name',message: 'What is your name?'},{type: 'list',name: 'color',message: 'What is your favorite color?',choices: ['Red', 'Green', 'Blue']}
]).then(answers => {console.log(`Hello, ${answers.name}. Your favorite color is ${answers.color}.`);
});
动态选择(动态选项)
inquirer 允许你根据用户输入动态生成选项。
inquirer.prompt([{type: 'input',name: 'country',message: 'Which country are you from?'},{type: 'list',name: 'city',message: 'Which city do you live in?',choices: function(answers) {const cities = {'USA': ['New York', 'Los Angeles', 'Chicago'],'India': ['Delhi', 'Mumbai', 'Bangalore']};return cities[answers.country] || [];}}
]).then(answers => {console.log(`You are from ${answers.city}, ${answers.country}.`);
});
在这个示例中,城市选项会根据用户选择的国家动态变化。
表单式输入
inquirer 还支持通过 form 提示收集多个输入。
const questions = [{type: 'input',name: 'name',message: 'What is your name?'},{type: 'input',name: 'age',message: 'What is your age?'}
];inquirer.prompt(questions).then(answers => {console.log(`Name: ${answers.name}, Age: ${answers.age}`);
});
配合lerna在Vue中使用示例
- 项目中根目录下新建文件
run-project.js
const fs = require('fs');
const path = require('path');
const { exec } = require('child_process');
const inquirer = require('inquirer');// 获取所有子项目
const packagesDir = path.join(__dirname, 'packages');
const projects = fs.readdirSync(packagesDir).filter((dir) => {const projectPath = path.join(packagesDir, dir);return fs.statSync(projectPath).isDirectory();
});// 如果没有子项目,提示并退出
if (projects.length === 0) {console.log('没有找到任何子项目!');process.exit(1);
}// 让用户选择要运行的项目
inquirer.prompt([{type: 'list',name: 'project',message: '请选择要运行的项目:',choices: projects,},]).then((answers) => {const selectedProject = answers.project;const projectPath = path.join(packagesDir, selectedProject);// 检查项目是否有 dev 脚本const packageJsonPath = path.join(projectPath, 'package.json');if (!fs.existsSync(packageJsonPath)) {console.log(`项目 ${selectedProject} 没有 package.json 文件!`);process.exit(1);}const packageJson = require(packageJsonPath);if (!packageJson.scripts || !packageJson.scripts.dev) {console.log(`项目 ${selectedProject} 没有 dev 脚本!`);process.exit(1);}// 运行项目的 dev 脚本console.log(`正在运行项目 ${selectedProject}...`);const childProcess = exec(`cd ${projectPath} && npm run dev`, (error, stdout, stderr) => {if (error) {console.error(`执行错误: ${error.message}`);return;}if (stderr) {console.error(`错误输出: ${stderr}`);return;}console.log(`输出: ${stdout}`);});// 监听子进程的输出childProcess.stdout.on('data', (data) => {console.log(data);});childProcess.stderr.on('data', (data) => {console.error(data);});}).catch((error) => {console.error('发生错误:', error);});
- 在package.json里面写入配置
"scripts": {"start": "node run-project.js"},
- 终端运行
npm start
相关文章:
inquirer介绍及配合lerna在Vue中使用示例
目录 安装基本用法使用多个提示框动态选择(动态选项)表单式输入配合lerna在Vue中使用示例 Inquirer 是一个用于创建交互式命令行工具的 Node.js 库,常用于收集用户输入。它提供了多种类型的提示框,可以用于创建交互式应用程序&…...
AI商业化:如何包装技术并找到客户需求?
AI商业化:如何包装技术并找到客户需求? 适用人群:对人工智能技术有一定沉淀,正在探索技术变现和商业模式创新的创业者、技术团队以及企业管理者。同时也适合对 AI 产品包装、市场调研与用户调研感兴趣的从业人员。 一、引言 在过去几年里,从 GPT、Transformer 到 DeepSee…...
基于MODIS/Landsat/Sentinel/国产卫星遥感数据与DSSAT作物模型同化的作物产量估算
基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…...
OpenAI 宣布免费开放 ChatGPT 搜索,无需注册
在科技飞速发展的今天,人工智能领域的每一次突破都犹如一颗重磅炸弹,震撼着整个世界。北京时间 2025 年 2 月 6 日凌晨,OpenAI 宣布向所有用户开放 ChatGPT 搜索功能,且无需注册,这一消息瞬间引发了全球范围内的广泛关…...
如何打开vscode系统用户全局配置的settings.json
📌 settings.json 的作用 settings.json 是 Visual Studio Code(VS Code) 的用户配置文件,它存储了 编辑器的个性化设置,包括界面布局、代码格式化、扩展插件、快捷键等,是用户全局配置(影响所有…...
DeepSeek-V3本地Docker容器化部署
1. 安装Docker 确保已安装Docker Desktop for Mac: 下载并安装 Docker Desktop。 安装完成后,启动Docker Desktop。 验证安装: docker --version docker-compose --version 2. 克隆DeepSeek-V3仓库 git clone https://github.com/deeps…...
【Leetcode 每日一题】47. 全排列 II
问题背景 给定一个可包含重复数字的序列 n u m s nums nums,按任意顺序 返回所有不重复的全排列。 数据约束 1 ≤ n u m s . l e n g t h ≤ 8 1 \le nums.length \le 8 1≤nums.length≤8 − 10 ≤ n u m s [ i ] ≤ 10 -10 \le nums[i] \le 10 −10≤nums[i]≤…...
【Uniapp-Vue3】从uniCloud中获取数据
需要先获取数据库对象: let db uniCloud.database(); 获取数据库中数据的方法: db.collection("数据表名称").get(); 所以就可以得到下面的这个模板: let 函数名 async () > { let res await db.collection("数据表名称…...
【重生之学习C语言----杨辉三角篇】
目录 编辑 --------------------------------------begin---------------------------------------- 一、什么是杨辉三角? 二、问题分析 三、算法设计 使用二维数组存储杨辉三角: 递推关系: 格式化输出: 四、代码实现 完…...
天童教育:帮助孩子建立稳定的自信心
不少家长发现,自己家孩子不知道从什么时候开始,不再自信了。有些孩子在面对挑战时总是畏缩不前,不敢尝试新事物;在众人面前发言时,声音微弱,眼神闪躲。昆明天童教育认为,这些表现往往是孩子自信…...
LabVIEW自定义测量参数怎么设置?
以下通过一个温度采集案例,说明在 LabVIEW 中设置自定义测量参数的具体方法: 案例背景 假设使用 NI USB-6009 数据采集卡 和 热电偶传感器 监测温度,需自定义以下参数: 采样率:1 kHz 输入量程:0~10 V&a…...
Vim的基础命令
移动光标 H(左) J(上) K(下) L(右) $ 表示移动到光标所在行的行尾, ^ 表示移动到光标所在行的行首的第一个非空白字符。 0 表示移动到光标所在行的行首。 W 光标向前跳转一个单词 w光标向前跳转一个单词 B光标向后跳转一个单词 b光标向后跳转一个单词 G 移动光标到…...
SpringCloud详细讲解
学习目标 微服务框架SpringCloud的核心组件分布式与集群Spring Cloud 优缺点 微服务框架 微服务框架是将某个应用程序开发划分为多个小型服务独立进行业务开发的一种架构模式。以下是对微服务框架的详细介绍: 一、定义与特点 定义:微服务框架围绕业务…...
使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现
使用 OpenGL ES 在 iOS 上渲染一个四边形:从基础到实现 在 iOS 开发中,OpenGL ES 是一个强大的工具,用于实现高性能的 2D 和 3D 图形渲染。本文将详细分析一段完整的代码,展示如何使用 OpenGL ES 在 iOS 上渲染一个简单的四边形。…...
98.2 AI量化开发:基于DeepSeek打造个人专属金融消息面-AI量化分析师(理论+全套Python代码)
目录 0. 承前1. 金融工程结构图2. Why is DeepSeek3. 项目实现代码3.1 导入python库3.2 参数设置3.3 获取数据3.4 数据处理3.5 AI人设提示词3.6 Messages构建3.7 AI Agent3.8 response格式处理3.9 汇总函数3.10 运行案例 4. 总结4.1 系统优点4.2 系统缺点4.3 可提升方向 0. 承前…...
复制粘贴小工具——Ditto
在日常工作中,复制粘贴是常见的操作,但Windows系统自带的剪贴板功能较为有限,只能保存最近一次的复制记录,这对于需要频繁复制粘贴的用户来说不太方便。今天,我们介绍一款开源、免费且功能强大的剪贴板增强工具——Dit…...
中国人名汉语拼音字母拼写规则
中国人名汉语拼音字母拼写规则 1. Lv and Lyu2. 中国人名汉语拼音字母拼写规则References 1. Lv and Lyu LongBench: A Bilingual, Multitask Benchmark for Long Context Understanding https://arxiv.org/abs/2308.14508 2. 中国人名汉语拼音字母拼写规则 http://www.moe.g…...
MAC OS安装Homebrew
文章目录 1.下载Homebrew2.完成安装3.验证安装4.更新 Homebrew作为一个包管理器,提供了一种简便的方式来安装、更新和卸载各种命令行工具和应用程序。相比于手动下载和编译源代码,或者从不同的网站下载安装包,使用Homebrew可以显著减少这些操…...
计算机组成原理——存储系统(四)
当晨曦的第一缕光线划破夜空,那是宇宙给奋斗者的信号——光明属于那些在黑暗中依旧寻找希望的人。在这条通往梦想的道路上,每一步都充满挑战,但正是这些挑战定义了你的坚韧与不屈。不要满足于现状,因为你的潜力远超想象࿱…...
飞算JavaAI:开辟 AI + 行业趋势的编程新范式
在当今数字化浪潮汹涌澎湃的时代,科技的快速发展正以前所未有的速度重塑着各个行业的面貌。人工智能(AI)作为其中最具变革性的力量之一,已经深入渗透到众多领域,从金融、医疗到制造业、教育等,无一不在经历…...
Axure PR 9 动效 设计交互
大家好,我是大明同学。 这期内容,我们来用Axure制作一组动效。 动效 创建动效元件 1.打开一个新的 RP 文件并在画布上打开 Page 1。 2.选中画布,将画布填充颜色设置为蓝色(#0052D9)。 3.在元件库中拖出一个圆形元件,选中矩形元件&…...
DeepSeek 本地部署
DeepSeek 本地部署 一、引言二、为什么选择本地部署 DeepSeek?三、具体步骤1.下载Ollama并安装(Ollama 提供 API 支持)2. 部署 deepseek-r12.下载Chatbox并配置为本地DeepSeek (Chatbox 提供 UI 界面) 一、引言 近期&…...
langchain教程-3.OutputParser/输出解析
前言 该系列教程的代码: https://github.com/shar-pen/Langchain-MiniTutorial 我主要参考 langchain 官方教程, 有选择性的记录了一下学习内容 这是教程清单 1.初试langchain2.prompt3.OutputParser/输出解析4.model/vllm模型部署和langchain调用5.DocumentLoader/多种文档…...
JavaScript系列(62)--实时通信系统实现详解
JavaScript实时通信系统实现详解 🔄 今天,让我们深入探讨JavaScript的实时通信系统实现。实时通信是现代Web应用中不可或缺的一部分,它能够提供即时的数据交互和更好的用户体验。 WebSocket通信基础 🌟 💡 小知识&am…...
网络工程师 (20)计算机网络的概念
一、定义 计算机网络是指将地理位置不同、具有独立功能的多台计算机及其外部设备,通过通信线路及通信设备连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现信息传递和资源共享的计算机通信系统。 二、组成 资源子网&…...
Unity UI Default Shader分析
文章目录 UI默认材质和Default ShaderShader的属性定义Mask组件支持RectMask2D组件支持其他支持使用Unity UGUI时经常有自定义shader的需求,虽然我们可以直接按照shader lab的规范写出shader,使用也没问题,但如果能让自定义shader符合UI shader的规范,支持Mask,Rect2DMask…...
IEEE 802.3/802.2 | LLC / SNAP
注:本文为 “IEEE 802.3/802.2 | LLC / SNAP” 相关文章合辑。 未整理去重。 第三篇部分内容出自第二篇。 802.2 协议 haoay321 2010-01-28 20:52:02 LLC 协议 LLC(Logic Link Control,逻辑链路控制)是 IEEE 802.2 协议中规定…...
【Linux】24.进程间通信(3)
文章目录 3.6 systemv共享内存3.6.1 共享内存函数3.6.3 一个简单的共享内存代码实现3.6.4 一个复杂的共享内存代码实现3.6.4 key和shmid的主要区别: 3.7 systemv消息队列(了解)3.8 systemv信号量(了解)进程互斥四个问题理解信号量…...
【自然语言处理】TextRank 算法提取关键词(Python实现)
文章目录 前言PageRank 实现TextRank 简单版源码实现jieba工具包实现TextRank 前言 TextRank 算法是一种基于图的排序算法,主要用于文本处理中的关键词提取和文本摘要。它基于图中节点之间的关系来评估节点的重要性,类似于 Google 的 PageRank 算法。Tex…...
Java-128陷阱、抽象类和接口的区别、为什么 hashCode()需要和equals()一起重写、封装继承多态
128陷阱 Integer a 100; Integer b 100; System.out.println(ab); //true Integer c 1000; Integer d 1000; System.out.println(cd);//false int e 1000; System.out.println(ce);//true 分析以上代码运行的结果 源码: Integer a128; 编译器执行的是&…...
