在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)
}
}
});