通过inquirer命令行选择操作后执行git命令

283 阅读1分钟

package.json文件npm run preb 要commint的信息 命令通过node中js脚本

"scripts": {
    "dev": "node scripts/dev.js",
    "publish:test": "node build.js test", // 测试环境
    "publish:pre": "node build.js pre", // 预发环境
    "publish:pro": "node build.js pro", // 生产环境
    "build_project": "vite build --config vite.config.project.js --emptyOutDir",
    "preb": "node preBuild.js src/projects"
  },

build.js文件内代码

const fs = require('fs')
const env = process.argv[2] // 获取变量信息
// 通过fs读取buildFile.js内文件内容 读取成功后 进行build
fs.readFile(`${process.cwd()}/buildFile.js`, 'utf-8',(err, project) => {
	if (err) throw err;
  require('child_process').execSync(`cross-env project=${project} npm run build_project -- --mode ${env}`, {stdio: 'inherit'});
})

preBuild.js文件内代码

const shell = require("shelljs");  // 执行文件操作
const inquirer = require("inquirer");
var map = require('lodash.map');
const { resolve } = require('path')
const fs = require('fs')
/**
 * @param {String} srcType 要获取的文件目录 ==》默认src目录
 * @param {String} commitText commit 详细信息
 */
let srcType = process.argv[2] || 'src'
let commitText = process.argv[3] || ''
if (!commitText) {
  console.log("请填写commit信息");
  return
}
const files = fs.readdirSync(resolve(process.cwd(), srcType));
// 生成可构建文件目录
var filesChoices = map(files, (item) => {
  return {
    name: item,
    value: item
  }
})
inquirer.prompt([
  {
    type: 'list',
    name: 'isBuilding',
    message: '⚡️⚡️⚡️是否要构建该版本?⚡️⚡️⚡️',
    choices: [{ item: true, value: true }, { item: false, value: false }],
    default: true
  },
  {
    type: 'list',
    name: 'isBuildingType',
    message: '⚡️⚡️⚡️构建项目信息选择⚡️⚡️⚡️',
    choices: filesChoices,
    default: '',
    // 当isBuilding为true时展示此项列表选择
    when: function (answers) {
      return answers.isBuilding;
    }
  }
]).then(answer => {
  // 选择后执行then方法
  if (answer.isBuilding) {
    const content = JSON.stringify(answer.isBuildingType)
    try {
      // 异步的在buildFile.js文件内写入
      fs.writeFileSync(`${process.cwd()}/buildFile.js`, content)
      // 通过shell语句执行git命令
      shell.exec('git add .')
      shell.exec(`git commit -m "${commitText}"`)
      shell.exec(`git pull`)
      shell.exec('git push')
    } catch (err) {
      console.error(err)
    }
  }
});