inquirer介绍及配合lerna在Vue中使用示例

news2025/2/7 11:34:11

目录

  • 安装
  • 基本用法
  • 使用多个提示框
  • 动态选择(动态选项)
  • 表单式输入
  • 配合lerna在Vue中使用示例

Inquirer 是一个用于创建交互式命令行工具的 Node.js 库,常用于收集用户输入。它提供了多种类型的提示框,可以用于创建交互式应用程序(比如 CLI 工具),并且支持各种类型的输入,包括文本、选择框、确认框、密码输入框等。这个库在开发过程中非常有用,尤其是在构建脚本和自动化工具时。

安装

首先,你需要安装 inquirer

npm install inquirer

基本用法

  1. 文本输入框(input)

input 提示允许用户输入一段文本。

const inquirer = require('inquirer');

inquirer.prompt([
  {
    type: 'input',
    name: 'username',
    message: 'Enter your username:'
  }
]).then(answers => {
  console.log(`Hello, ${answers.username}!`);
});

上面的代码会显示一个提示框,要求用户输入他们的用户名。

  1. 选择框(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}`);
});

此代码会显示一个选择框,允许用户选择一个颜色。

  1. 多选框(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(', ')}`);
});

在这个例子中,用户可以选择多个水果。

  1. 确认框(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.');
  }
});
  1. 密码输入框(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中使用示例

  1. 项目中根目录下新建文件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);
  });
  1. 在package.json里面写入配置
"scripts": {
    "start": "node run-project.js"
  },
  1. 终端运行
npm start

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2294270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于MODIS/Landsat/Sentinel/国产卫星遥感数据与DSSAT作物模型同化的作物产量估算

基于过程的作物生长模拟模型DSSAT是现代农业系统研究的有力工具,可以定量描述作物生长发育和产量形成过程及其与气候因子、土壤环境、品种类型和技术措施之间的关系,为不同条件下作物生长发育及产量预测、栽培管理、环境评价以及未来气候变化评估等提供了…

如何打开vscode系统用户全局配置的settings.json

📌 settings.json 的作用 settings.json 是 Visual Studio Code(VS Code) 的用户配置文件,它存储了 编辑器的个性化设置,包括界面布局、代码格式化、扩展插件、快捷键等,是用户全局配置(影响所有…

【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 移动光标到…

复制粘贴小工具——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 界面) 一、引言 近期&…

网络工程师 (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…

如何评价镜头的好坏?光学镜头的一种评价标准

1光学传递函数MTF MTF是什么? 光学传递函数(optical transfer function)是指以空间频率为变量,表征成像过程中调制度和横向相移的相对变化的函数。光学传递函数是光学系统对空间频谱的滤波变换。一个非相干照明的光学成像系统&a…

openGauss 3.0 数据库在线实训课程1:学习数据库状态查看

openGauss数据库状态查看 前提 我正在参加21天养成好习惯| 第二届openGauss每日一练活动 课程详见:openGauss 3.0.0数据库在线实训课程 学习目标 学习从操作系统层面和使用openGauss工具查看数据库的状态、版本和数据文件目录。 课程作业 gs_ctl是openGauss提…

Stable Diffusion的入门介绍和使用教程

Stable Diffusion是一个文本到图像的潜在扩散模型,由CompVis、StabilityAI和LAION的研究人员和工程师创建。它使用来自LAION-5B数据库子集的512x512图像进行训练。使用这个模型,可以生成包括人脸在内的任何图像,因为有开源的预训练模型&#…