增加手动同步库信息脚本
This commit is contained in:
38
bin/appsSync.js
Normal file
38
bin/appsSync.js
Normal file
@@ -0,0 +1,38 @@
|
||||
const axios = require("axios");
|
||||
const {chalkTag, findApp, fs} = require("./tools");
|
||||
const compiler = require('vue-template-compiler')
|
||||
const saveApps = app => {
|
||||
if (app.list.length > 0) {
|
||||
return axios.post("http://192.168.1.87:12525/node/wechatapps/addOrUpdate", app, {timeout: 1000}).then(res => {
|
||||
if (res.data.code == 0) chalkTag.done("产品库目录已同步至后台数据库...")
|
||||
}).catch(() => 0)
|
||||
} else return Promise.reject("没有应用")
|
||||
}
|
||||
const getAppInfo = (file, apps) => {
|
||||
if (/[\\\/](App[^\\\/]+)\.vue$/g.test(file)) {
|
||||
const name = file.replace(/.+[\\\/](App[^\\\/]+)\.vue$/, '$1'),
|
||||
source = fs.readFileSync(file).toString(),
|
||||
parsed = compiler.parseComponent(source),
|
||||
script = parsed.script?.content || "",
|
||||
label = script.match(/label:[^,]+/)?.[0]?.replace(/.+["']([^"']+).+/, '$1')
|
||||
apps.push({
|
||||
id: file.replace(/\.vue$/, '').replace(/[\\\/]/g, '_'),
|
||||
label: label || name,
|
||||
libPath: file.replace(/\.vue$/, ''),
|
||||
name,
|
||||
type: 'web'
|
||||
})
|
||||
}
|
||||
}
|
||||
const sync = () => {
|
||||
chalkTag.info("开始扫描库工程...")
|
||||
const list = []
|
||||
Promise.all([
|
||||
findApp('packages', app => getAppInfo(app, list)),
|
||||
findApp('project', app => getAppInfo(app, list)),
|
||||
]).then(() => {
|
||||
chalkTag.info("正在同步...")
|
||||
saveApps({type: "web", list}).catch(() => 0).finally(() => chalkTag.done("同步成功!"))
|
||||
})
|
||||
}
|
||||
sync()
|
||||
Reference in New Issue
Block a user