@clack/prompts实现选择运行环境

31 阅读1分钟

1. 安装@clack/prompts

npm i  @clack/prompts -D

2.创建一个/scripts/start.js

import { select, cancel, isCancel } from '@clack/prompts';
import { exec, spawn } from 'child_process';
import { promisify } from 'util';
const execAsync = promisify(exec);

async function main() {
  const mode = await select({
    message: '请选择运行环境:',
    options: [
      { label: '测试环境 (development)', value: 'test' },
      { label: '生产环境 (production)', value: 'prod' }
    ]
  });

  if (isCancel(mode)) {
    cancel('操作已取消');
    process.exit(0);
  }

  // 动态生成命令 
  const command = {
    test: 'vite --mode development',
    prod: 'vite --mode production',
  }[mode]

  // 安全执行(防命令注入)
  const child = spawn(command.split('  ')[0], command.split('  ').slice(1), {
    stdio: 'inherit', // 继承父进程输出流 
    shell: true       // 兼容 Windows 
  })

  child.on('exit', (code) => {
    console.log(` 子进程退出,代码:${code}`)
  })
}

main();

3. 修改package.json

  "scripts": {
    "dev": "node scripts/start.js",
    "dev:test": "vite --mode development",
    "dev:prod": "vite --mode production",
    "build": "vite build",
    "build:stage": "vite build --mode staging",
    "preview": "vite preview"
  }

4.执行npm run dev

image.png