From fd72e6a23fefa8299044cb5fc5924868d3797ed0 Mon Sep 17 00:00:00 2001 From: aixianling Date: Wed, 11 May 2022 16:52:54 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BB=A3=E7=A0=81=E7=94=9F?= =?UTF-8?q?=E6=88=90=E5=92=8C=E5=88=86=E5=8C=85=E5=88=97=E5=85=A5=E7=83=AD?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E5=BC=80=E5=8F=91=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bin/clean.js | 20 ++++++ bin/{serve.js => pages.js} | 68 +++++++++++-------- package.json | 9 +-- src/pages/home.vue | 16 +++-- {project => src/project}/build.js | 8 +-- {project => src/project}/sanjianxi/.gitignore | 0 .../AppGreatPowerIntegral.vue | 0 .../AppGreatPowerIntegral/editIntegral.vue | 0 .../AppNeighborLinkage/AppNeighborLinkage.vue | 0 .../AppNeighborLinkage/addLinkage.vue | 0 .../AppNeighborLinkage/familyInfo.vue | 0 .../AppNeighborLinkage/memberInfo.vue | 0 .../AppNeighborLinkage/myNeighborInfo.vue | 0 .../AppNeighborLinkage/neighborDetail.vue | 0 .../project}/sanjianxi/apps.import.json | 0 .../project}/sanjianxi/package.json | 0 .../project}/shandong10086/.gitignore | 0 .../project}/shandong10086/apps.import.json | 0 .../project}/shandong10086/package.json | 0 19 files changed, 77 insertions(+), 44 deletions(-) create mode 100644 bin/clean.js rename bin/{serve.js => pages.js} (64%) rename {project => src/project}/build.js (92%) rename {project => src/project}/sanjianxi/.gitignore (100%) rename {project => src/project}/sanjianxi/AppGreatPowerIntegral/AppGreatPowerIntegral.vue (100%) rename {project => src/project}/sanjianxi/AppGreatPowerIntegral/editIntegral.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/AppNeighborLinkage.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/addLinkage.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/familyInfo.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/memberInfo.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/myNeighborInfo.vue (100%) rename {project => src/project}/sanjianxi/AppNeighborLinkage/neighborDetail.vue (100%) rename {project => src/project}/sanjianxi/apps.import.json (100%) rename {project => src/project}/sanjianxi/package.json (100%) rename {project => src/project}/shandong10086/.gitignore (100%) rename {project => src/project}/shandong10086/apps.import.json (100%) rename {project => src/project}/shandong10086/package.json (100%) diff --git a/bin/clean.js b/bin/clean.js new file mode 100644 index 0000000..3b4b2df --- /dev/null +++ b/bin/clean.js @@ -0,0 +1,20 @@ +const fs = require("fs"); +const fse = require("fs-extra") +const path = require("path"); +const getDirs = (dir, list = [], cb) => { + const dirs = fs.readdirSync(dir, {withFileTypes: true}) + dirs.map(d => { + if (d.isDirectory()) { + let p = path.join(dir, d.name) + list.push(p) + if (cb(d, p)) getDirs(p, list, cb) + } + }) + return list +} +getDirs(path.join(__dirname, '..', 'src'), [], (dir, path) => { + if (dir.name == "apps") { + fse.remove(path) + } + return dir.name != "apps" +}) diff --git a/bin/serve.js b/bin/pages.js similarity index 64% rename from bin/serve.js rename to bin/pages.js index 97759ac..52f5168 100644 --- a/bin/serve.js +++ b/bin/pages.js @@ -69,6 +69,16 @@ const copyFiles = (dir, source = 'src/mods') => { }) }) } +const setPageStyle = (app, file) => { + let vue = fs.readFileSync(file).toString() + if (/customNavigation/.test(vue)) { + app.style = {navigationStyle: "custom"} + } else if (/appName/.test(vue)) { + let appName = vue.replace(/[\s\S]*(appName:.+),[\s\S]*/gm, '$1'), + title = appName.replace(/(appName:|["'])/g, '') + app.style = {navigationBarTitleText: title} + } +} const start = () => { chalkTag.info('开始生成pages.json...') let json = { @@ -81,7 +91,8 @@ const start = () => { ], subPackages: [ {root: "mods/", pages: []}, - {root: "components/pages/", pages: []} + {root: "components/pages/", pages: []}, + {root: "project/", pages: []}, ], globalStyle: { pageOrientation: "auto", @@ -90,42 +101,41 @@ const start = () => { backgroundColor: "#4181FF" } } - copyFiles('src/mods/project', 'project').then(() => findApp('src/components/pages', file => { - if (/.+\\[^\\]+\\[^\\]+\.vue/g.test(file)) { - let app = { - path: file.replace(/^src\\components\\pages\\(.*).vue/g, '$1').replace(/\\/g, '/') + Promise.all([ + findApp('src/components/pages', file => { + if (/.+\\[^\\]+\\[^\\]+\.vue/g.test(file)) { + let app = { + path: file.replace(/^src\\components\\pages\\(.*).vue/g, '$1').replace(/\\/g, '/') + } + setPageStyle(app, file) + return json.subPackages[1].pages.push(app) } - let vue = fs.readFileSync(file).toString() - if (/appName/.test(vue)) { - let appName = vue.replace(/[\s\S]*(appName:.+),[\s\S]*/gm, '$1'), - title = appName.replace(/(appName:|["'])/g, '') - app.style = {navigationBarTitleText: title} - } - json.subPackages[1].pages.push(app) - } - }).then(() => { - return findApp('src/mods', file => { + }), + findApp('src/mods', file => { if (/.+\\App[^\\]+\\[^\\]+\.vue/g.test(file)) { let app = { name: file.replace(/.*\\([^\\]+).vue/g, '$1'), path: file.replace(/^src\\mods\\(.*).vue/g, '$1').replace(/\\/g, '/') } - let vue = fs.readFileSync(file).toString() - if (/appName/.test(vue)) { - let appName = vue.replace(/[\s\S]*(appName:.+),[\s\S]*/gm, '$1'), - title = appName.replace(/(appName:|["'])/g, '') - app.style = {navigationBarTitleText: title} - } - json.subPackages[0].pages.push(app) + setPageStyle(app, file) + return json.subPackages[0].pages.push(app) + } + }), + findApp('src/project', file => { + if (/.+\\App[^\\]+\\[^\\]+\.vue/g.test(file)) { + let app = { + name: file.replace(/.*\\([^\\]+).vue/g, '$1'), + path: file.replace(/^src\\project\\(.*).vue/g, '$1').replace(/\\/g, '/') + } + setPageStyle(app, file) + return json.subPackages[2].pages.push(app) } - }).then(() => { - fsExtra.outputJson('src/pages.json', json, () => { - chalkTag.done('生成pages.json') - }) }) - })) - - + ]).then(() => { + fsExtra.outputJson('src/pages.json', json, () => { + chalkTag.done('生成pages.json') + }) + }) } start(); diff --git a/package.json b/package.json index d6dd331..7a10d48 100644 --- a/package.json +++ b/package.json @@ -4,17 +4,18 @@ "private": false, "author": "Kubbo", "scripts": { - "dev": "node bin/serve.js&&cross-env NODE_ENV=development VUE_APP_CW_MODE=dev UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize", + "dev": "node bin/pages.js&&cross-env NODE_ENV=development VUE_APP_CW_MODE=dev UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize", + "pages": "node bin/pages.js", "lib": "npm unpublish --force&&npm publish", - "pages": "node bin/serve.js", - "lib:all": "node project/build.js&&npm unpublish --workspaces --force&&npm publish --workspaces" + "lib:all": "node src/project/build.js&&npm unpublish --workspaces --force&&npm publish --workspaces&&node bin/clean.js", + "clean": "node bin/clean.js" }, "files": [ "src/mods" ], "workspaces": [ "src/components", - "project/*" + "src/project/*" ], "publishConfig": { "registry": "http://cli.sinoecare.net" diff --git a/src/pages/home.vue b/src/pages/home.vue index f3825c0..e3b1baa 100644 --- a/src/pages/home.vue +++ b/src/pages/home.vue @@ -69,13 +69,15 @@ export default { }, getApps() { this.apps = [] - let applications = require.context('../mods', true, /\.(\/.+)\/App[^\/]+\.vue$/) - applications.keys().map(path => { - if (applications(path).default) { - let {name: key, appName: name} = applications(path).default - this.apps.push({key, name, path: path.replace(/^\.(.+).vue$/g, '$1')}) - } - }) + // let applications = require.context('../', true, /\.(\/.+)\/App[^\/]+\.vue$/, 'lazy') + // applications.keys().map(path => { + // applications(path).then(file => { + // if (file.default) { + // let {name: key, appName: name} = file.default + // this.apps.push({key, name, path: path.replace(/^\.(.+).vue$/g, '$1')}) + // } + // }) + // }) }, getAuth() { this.$nextTick(() => { diff --git a/project/build.js b/src/project/build.js similarity index 92% rename from project/build.js rename to src/project/build.js index 1028c40..9ff3e71 100644 --- a/project/build.js +++ b/src/project/build.js @@ -77,7 +77,7 @@ const copyFiles = (dir, source = 'src/mods') => { */ const init = () => { chalkTag.info('开始运行项目打包工具...') - return new Promise(resolve => fs.readdir('./project', (err, files) => { + return new Promise(resolve => fs.readdir('./src/project', (err, files) => { resolve(files.filter(e => e.indexOf('.') < 0)) })) } @@ -88,12 +88,12 @@ 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(`project/${project}/apps`) + fsExtra.emptyDirSync(`src/project/${project}/apps`) let apps = [] if (data) { chalkTag.info(project + '加载业务应用配置...') Promise.all([ - findApp(`project/${project}`, file => { + findApp(`src/project/${project}`, file => { let reg = new RegExp(/.+(App[^\\\/]+)$/) if (reg.test(file)) { data[file.replace(reg, '$1')] = file.replace(reg, '$1') @@ -104,7 +104,7 @@ const generateMain = project => { ]).then(() => Promise.all(Object.keys(data).map(e => { let app = [...new Set(apps)].find(s => s.indexOf(e) > -1) if (app) { - return copyFiles(`project/${project}/apps/${e}`, app) + return copyFiles(`src/project/${project}/apps/${e}`, app) } }))).then(() => { chalkTag.done(project + '业务应用加载完成') diff --git a/project/sanjianxi/.gitignore b/src/project/sanjianxi/.gitignore similarity index 100% rename from project/sanjianxi/.gitignore rename to src/project/sanjianxi/.gitignore diff --git a/project/sanjianxi/AppGreatPowerIntegral/AppGreatPowerIntegral.vue b/src/project/sanjianxi/AppGreatPowerIntegral/AppGreatPowerIntegral.vue similarity index 100% rename from project/sanjianxi/AppGreatPowerIntegral/AppGreatPowerIntegral.vue rename to src/project/sanjianxi/AppGreatPowerIntegral/AppGreatPowerIntegral.vue diff --git a/project/sanjianxi/AppGreatPowerIntegral/editIntegral.vue b/src/project/sanjianxi/AppGreatPowerIntegral/editIntegral.vue similarity index 100% rename from project/sanjianxi/AppGreatPowerIntegral/editIntegral.vue rename to src/project/sanjianxi/AppGreatPowerIntegral/editIntegral.vue diff --git a/project/sanjianxi/AppNeighborLinkage/AppNeighborLinkage.vue b/src/project/sanjianxi/AppNeighborLinkage/AppNeighborLinkage.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/AppNeighborLinkage.vue rename to src/project/sanjianxi/AppNeighborLinkage/AppNeighborLinkage.vue diff --git a/project/sanjianxi/AppNeighborLinkage/addLinkage.vue b/src/project/sanjianxi/AppNeighborLinkage/addLinkage.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/addLinkage.vue rename to src/project/sanjianxi/AppNeighborLinkage/addLinkage.vue diff --git a/project/sanjianxi/AppNeighborLinkage/familyInfo.vue b/src/project/sanjianxi/AppNeighborLinkage/familyInfo.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/familyInfo.vue rename to src/project/sanjianxi/AppNeighborLinkage/familyInfo.vue diff --git a/project/sanjianxi/AppNeighborLinkage/memberInfo.vue b/src/project/sanjianxi/AppNeighborLinkage/memberInfo.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/memberInfo.vue rename to src/project/sanjianxi/AppNeighborLinkage/memberInfo.vue diff --git a/project/sanjianxi/AppNeighborLinkage/myNeighborInfo.vue b/src/project/sanjianxi/AppNeighborLinkage/myNeighborInfo.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/myNeighborInfo.vue rename to src/project/sanjianxi/AppNeighborLinkage/myNeighborInfo.vue diff --git a/project/sanjianxi/AppNeighborLinkage/neighborDetail.vue b/src/project/sanjianxi/AppNeighborLinkage/neighborDetail.vue similarity index 100% rename from project/sanjianxi/AppNeighborLinkage/neighborDetail.vue rename to src/project/sanjianxi/AppNeighborLinkage/neighborDetail.vue diff --git a/project/sanjianxi/apps.import.json b/src/project/sanjianxi/apps.import.json similarity index 100% rename from project/sanjianxi/apps.import.json rename to src/project/sanjianxi/apps.import.json diff --git a/project/sanjianxi/package.json b/src/project/sanjianxi/package.json similarity index 100% rename from project/sanjianxi/package.json rename to src/project/sanjianxi/package.json diff --git a/project/shandong10086/.gitignore b/src/project/shandong10086/.gitignore similarity index 100% rename from project/shandong10086/.gitignore rename to src/project/shandong10086/.gitignore diff --git a/project/shandong10086/apps.import.json b/src/project/shandong10086/apps.import.json similarity index 100% rename from project/shandong10086/apps.import.json rename to src/project/shandong10086/apps.import.json diff --git a/project/shandong10086/package.json b/src/project/shandong10086/package.json similarity index 100% rename from project/shandong10086/package.json rename to src/project/shandong10086/package.json