Files
dvcp_v2_wechat_app/src/project/build.js

58 lines
1.8 KiB
JavaScript
Raw Normal View History

2022-05-12 10:58:39 +08:00
const {chalkTag, fsExtra, findApp, copyFiles, fs, path} = require("../../bin/tools");
2022-03-01 18:01:21 +08:00
/**
* 初始化打包配置文件
*/
const init = () => {
chalkTag.info('开始运行项目打包工具...')
return new Promise(resolve => fs.readdir('./src/project', (err, files) => {
2022-03-01 18:01:21 +08:00
resolve(files.filter(e => e.indexOf('.') < 0))
}))
}
/**
* 拷贝对应文件
*/
const generateMain = project => {
const getApps = new Promise(resolve => {
const appLib = path.join(__dirname, project.toString(), 'apps.import.json')
fsExtra.readJson(appLib, (err, data) => {
fsExtra.emptyDirSync(`src/project/${project}/apps`)
2022-03-01 18:01:21 +08:00
let apps = []
if (data) {
2022-04-20 11:35:08 +08:00
chalkTag.info(project + '加载业务应用配置...')
2022-04-20 11:05:38 +08:00
Promise.all([
findApp(`src/project/${project}`, file => {
2022-04-20 11:35:08 +08:00
let reg = new RegExp(/.+(App[^\\\/]+)$/)
if (reg.test(file)) {
data[file.replace(reg, '$1')] = file.replace(reg, '$1')
2022-03-01 18:01:21 +08:00
}
2022-04-20 11:35:08 +08:00
return apps.push(file)
}),
findApp('src/mods', file => apps.push(file))
]).then(() => Promise.all(Object.keys(data).map(e => {
let app = [...new Set(apps)].find(s => s.indexOf(e) > -1)
if (app) {
return copyFiles(`src/project/${project}/apps/${e}`, app)
2022-04-20 11:35:08 +08:00
}
}))).then(() => {
chalkTag.done(project + '业务应用加载完成')
resolve()
2022-03-01 18:01:21 +08:00
})
} else {
chalkTag.done(project + '业务应用无打包')
resolve()
}
})
})
return Promise.all([getApps])
}
const start = () => {
//询问打包哪个项目
init().then(choices => {
return Promise.all(choices.map(prj => generateMain(prj))).then(() => {
chalkTag.info('开始发布...')
})
})
}
start();