{"_id":"@5c24/elpis","_rev":"5-69b5380b21ae4380e55cb69e3e6da6bd","name":"@5c24/elpis","dist-tags":{"latest":"1.0.4"},"versions":{"1.0.0":{"name":"@5c24/elpis","version":"1.0.0","author":{"name":"5C24"},"license":"ISC","_id":"@5c24/elpis@1.0.0","maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"dist":{"shasum":"4e353d54b5a38fbcfabf0f0d10eaaef2a3711090","tarball":"https://registry.npmjs.org/@5c24/elpis/-/elpis-1.0.0.tgz","fileCount":76,"integrity":"sha512-reyCHZZ7jYexJGdDhY2aEdmcbvJvPAawKInJ2ibijULoDATteG6csr3lfpYqANfKC0QPLhMGyw9lzMOQs+OHyQ==","signatures":[{"sig":"MEYCIQCq2Kh1pDgq3GkC7rav4PZ16CxJqB9IHl2i9t25CTRkIQIhAIEaNi8WI151SuRck9jgglybMz9qaCeJ71jWjfiznCe2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437461},"main":"index.js","config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"61b53434cb4e85a87ee6dc85caed1b988240ca97","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"_ENV='local' mocha test/**/*.js"},"_npmUser":{"name":"5c24","email":"You_5c24@163.com"},"repository":{"url":"https://git.code.tencent.com/5C24/elpis.git","type":"git"},"_npmVersion":"10.5.0","description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","directories":{},"_nodeVersion":"20.12.1","dependencies":{"ajv":"^6.10.2","koa":"2.7.0","md5":"^2.2.1","vue":"^3.3.4","glob":"^7.1.4","knex":"^0.19.0","less":"^3.8.1","path":"^0.12.7","vuex":"^4.1.0","axios":"^0.19.2","mysql":"^2.18.1","pinia":"^2.1.6","lodash":"^4.17.21","log4js":"^6.9.1","moment":"^2.29.4","echarts":"^5.5.0","express":"^4.18.2","nodemon":"^1.19.2","webpack":"^5.88.1","consoler":"^0.2.0","koa2-cors":"^2.0.6","css-loader":"^0.23.1","koa-router":"^7.4.0","koa-static":"^5.0.0","superagent":"^8.1.2","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-router":"^4.2.4","@babel/core":"^7.24.0","file-loader":"^6.2.0","less-loader":"^11.1.3","babel-loader":"^8.0.4","element-plus":"^2.3.7","jsonwebtoken":"^9.0.2","style-loader":"^0.14.1","koa-useragent":"2.0.0","node-schedule":"^2.1.1","thread-loader":"^4.0.4","webpack-merge":"^4.2.1","@babel/runtime":"^7.28.4","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","vue-json-viewer":"^3.0.4","vue-style-loader":"^4.1.2","@babel/preset-env":"^7.4.5","generate-password":"^1.7.1","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^0.1.19","terser-webpack-plugin":"^2.3.5","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","@element-plus/icons-vue":"^2.3.2","mini-css-extract-plugin":"^2.7.6","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","@babel/plugin-transform-runtime":"^7.1.0","html-webpack-inject-attributes-plugin":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","assert":"^2.0.0","eslint":"^7.32.0","ghooks":"~1.0.3","supertest":"^4.0.2","babel-eslint":"^10.0.2","eslint-plugin-vue":"^9.17.0","validate-commit-msg":"~2.14.0","eslint-plugin-import":"^2.28.1"},"_npmOperationalInternal":{"tmp":"tmp/elpis_1.0.0_1767865849718_0.287399207069037","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@5c24/elpis","version":"1.0.1","author":{"name":"5C24"},"license":"ISC","_id":"@5c24/elpis@1.0.1","maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"dist":{"shasum":"cdfeb11b9635cc578689ada921101f4144e3a94f","tarball":"https://registry.npmjs.org/@5c24/elpis/-/elpis-1.0.1.tgz","fileCount":76,"integrity":"sha512-ciIMB3D1bYKePt7v+ZLNsZeg4zkGHj4NUF2MLAIo0WY5aBmXoFLlCjm7vZgOKbAheGjBbS0B5jOGvm8Lxi884Q==","signatures":[{"sig":"MEYCIQDvAxgAVe10dPA4bAY4+dr+ydPB0zPHsMg4/PMn/xY7cwIhAII8feXbHwaZ84wV1A6NtfpPC0eacMFDIv92ZVeOSs4L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437462},"main":"index.js","config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"78ffb1a3af983ca79dfc9357129c40c0b10e1272","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"_ENV='local' mocha test/**/*.js"},"_npmUser":{"name":"5c24","email":"You_5c24@163.com"},"repository":{"url":"https://git.code.tencent.com/5C24/elpis.git","type":"git"},"_npmVersion":"10.5.0","description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","directories":{},"_nodeVersion":"20.12.1","dependencies":{"ajv":"^6.10.2","koa":"2.7.0","md5":"^2.2.1","vue":"^3.3.4","glob":"^7.1.4","knex":"^0.19.0","less":"^3.8.1","path":"^0.12.7","vuex":"^4.1.0","axios":"^0.19.2","mysql":"^2.18.1","pinia":"^2.1.6","lodash":"^4.17.21","log4js":"^6.9.1","moment":"^2.29.4","echarts":"^5.5.0","express":"^4.18.2","nodemon":"^1.19.2","webpack":"^5.88.1","consoler":"^0.2.0","koa2-cors":"^2.0.6","css-loader":"^0.23.1","koa-router":"^7.4.0","koa-static":"^5.0.0","superagent":"^8.1.2","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-router":"^4.2.4","@babel/core":"^7.24.0","file-loader":"^6.2.0","less-loader":"^11.1.3","babel-loader":"^8.0.4","element-plus":"^2.3.7","jsonwebtoken":"^9.0.2","style-loader":"^0.14.1","koa-useragent":"2.0.0","node-schedule":"^2.1.1","thread-loader":"^4.0.4","webpack-merge":"^4.2.1","@babel/runtime":"^7.28.4","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","vue-json-viewer":"^3.0.4","vue-style-loader":"^4.1.2","@babel/preset-env":"^7.4.5","generate-password":"^1.7.1","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^0.1.19","terser-webpack-plugin":"^5.3.16","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","@element-plus/icons-vue":"^2.3.2","mini-css-extract-plugin":"^2.7.6","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","@babel/plugin-transform-runtime":"^7.1.0","html-webpack-inject-attributes-plugin":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","assert":"^2.0.0","eslint":"^7.32.0","ghooks":"~1.0.3","supertest":"^4.0.2","babel-eslint":"^10.0.2","eslint-plugin-vue":"^9.17.0","validate-commit-msg":"~2.14.0","eslint-plugin-import":"^2.28.1"},"_npmOperationalInternal":{"tmp":"tmp/elpis_1.0.1_1767941471999_0.4952022028755154","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@5c24/elpis","version":"1.0.2","author":{"name":"5C24"},"license":"ISC","_id":"@5c24/elpis@1.0.2","maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"dist":{"shasum":"c3bf06bc02b00f3f3f5052b7137f2b498f970660","tarball":"https://registry.npmjs.org/@5c24/elpis/-/elpis-1.0.2.tgz","fileCount":76,"integrity":"sha512-p6hXXcOQKM2PjgUfjVSnwn/brvtLzI/+BtXuk1s5P5n+FEC4RHIzn6IkWnDncRy5NmiPuHeJCZ27G57NSIls7A==","signatures":[{"sig":"MEQCICU+9wmRiOPeijTgE4Q1YspCzFbIZptrHpbh19yDcRhqAiA29ykiLHMj2nU8MaTex3QIndDS44ShbkhJWkyzlwSh7A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":437329},"main":"index.js","config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"7d3d58cb8c08b7ab8e562572e8f7ef03fc138a1a","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"_ENV='local' mocha test/**/*.js"},"_npmUser":{"name":"5c24","email":"You_5c24@163.com"},"repository":{"url":"https://git.code.tencent.com/5C24/elpis.git","type":"git"},"_npmVersion":"10.5.0","description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","directories":{},"_nodeVersion":"20.12.1","dependencies":{"ajv":"^6.10.2","koa":"2.7.0","md5":"^2.2.1","vue":"^3.3.4","glob":"^7.1.4","knex":"^0.19.0","less":"^3.8.1","path":"^0.12.7","vuex":"^4.1.0","axios":"^0.19.2","mysql":"^2.18.1","pinia":"^2.1.6","lodash":"^4.17.21","log4js":"^6.9.1","moment":"^2.29.4","echarts":"^5.5.0","express":"^4.18.2","nodemon":"^1.19.2","webpack":"^5.88.1","consoler":"^0.2.0","koa2-cors":"^2.0.6","css-loader":"^0.23.1","koa-router":"^7.4.0","koa-static":"^5.0.0","superagent":"^8.1.2","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-router":"^4.2.4","@babel/core":"^7.24.0","file-loader":"^6.2.0","less-loader":"^11.1.3","babel-loader":"^8.0.4","element-plus":"^2.3.7","jsonwebtoken":"^9.0.2","style-loader":"^0.14.1","koa-useragent":"2.0.0","node-schedule":"^2.1.1","thread-loader":"^4.0.4","webpack-merge":"^4.2.1","@babel/runtime":"^7.28.4","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","vue-json-viewer":"^3.0.4","vue-style-loader":"^4.1.2","@babel/preset-env":"^7.4.5","generate-password":"^1.7.1","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^0.1.19","terser-webpack-plugin":"^5.3.16","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","@element-plus/icons-vue":"^2.3.2","mini-css-extract-plugin":"^2.7.6","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","@babel/plugin-transform-runtime":"^7.1.0","html-webpack-inject-attributes-plugin":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","assert":"^2.0.0","eslint":"^7.32.0","ghooks":"~1.0.3","supertest":"^4.0.2","babel-eslint":"^10.0.2","eslint-plugin-vue":"^9.17.0","validate-commit-msg":"~2.14.0","eslint-plugin-import":"^2.28.1"},"_npmOperationalInternal":{"tmp":"tmp/elpis_1.0.2_1767941790968_0.5097126095030378","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@5c24/elpis","version":"1.0.3","author":{"name":"5C24"},"license":"ISC","_id":"@5c24/elpis@1.0.3","maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"dist":{"shasum":"affc358d87ce94ded0fdc4f61174bdaa822f76d4","tarball":"https://registry.npmjs.org/@5c24/elpis/-/elpis-1.0.3.tgz","fileCount":80,"integrity":"sha512-0T6aSEIF5CYn780PZxaJJkg+n5Ly0hCa6lIydqYOHmbCq8Iw3ibsKJyncdF13FS/GOtl52WI26Nf8seWCUtvqA==","signatures":[{"sig":"MEQCICDWYcpG4totHN7EO8U7d2ass6vBvLuZ20ietJK/NeDKAiAHvy+lbM2fSd5MH8q1jNHwQN3cpSy5JFVv6s78llezwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":683953},"main":"index.js","config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"gitHead":"5d10182bb58fa2bceb5247a7e9bb0aa85862598b","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"_ENV='local' mocha test/**/*.js"},"_npmUser":{"name":"5c24","email":"You_5c24@163.com"},"repository":{"url":"https://git.code.tencent.com/5C24/elpis.git","type":"git"},"_npmVersion":"10.5.0","description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","directories":{},"_nodeVersion":"20.12.1","dependencies":{"ajv":"^6.10.2","koa":"2.7.0","md5":"^2.2.1","vue":"^3.3.4","glob":"^7.1.4","knex":"^0.19.0","less":"^3.8.1","path":"^0.12.7","vuex":"^4.1.0","axios":"^0.19.2","pinia":"^2.1.6","lodash":"^4.17.21","log4js":"^6.9.1","moment":"^2.29.4","mysql2":"^3.16.1","echarts":"^5.5.0","express":"^4.18.2","nodemon":"^1.19.2","webpack":"^5.88.1","consoler":"^0.2.0","koa2-cors":"^2.0.6","css-loader":"^0.23.1","koa-router":"^7.4.0","koa-static":"^5.0.0","superagent":"^8.1.2","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-router":"^4.2.4","@babel/core":"^7.24.0","file-loader":"^6.2.0","less-loader":"^11.1.3","babel-loader":"^8.0.4","element-plus":"^2.3.7","jsonwebtoken":"^9.0.2","style-loader":"^0.14.1","koa-useragent":"2.0.0","node-schedule":"^2.1.1","thread-loader":"^4.0.4","webpack-merge":"^4.2.1","@babel/runtime":"^7.28.4","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","vue-json-viewer":"^3.0.4","vue-style-loader":"^4.1.2","@babel/preset-env":"^7.4.5","generate-password":"^1.7.1","html-webpack-plugin":"^5.5.3","clean-webpack-plugin":"^0.1.19","terser-webpack-plugin":"^5.3.16","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","@element-plus/icons-vue":"^2.3.2","mini-css-extract-plugin":"^2.7.6","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","@babel/plugin-transform-runtime":"^7.1.0","html-webpack-inject-attributes-plugin":"^1.0.1"},"_hasShrinkwrap":false,"devDependencies":{"mocha":"^6.1.4","assert":"^2.0.0","eslint":"^7.32.0","ghooks":"~1.0.3","supertest":"^4.0.2","babel-eslint":"^10.0.2","eslint-plugin-vue":"^9.17.0","validate-commit-msg":"~2.14.0","eslint-plugin-import":"^2.28.1"},"_npmOperationalInternal":{"tmp":"tmp/elpis_1.0.3_1768554809940_0.031719573966781045","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@5c24/elpis","version":"1.0.4","description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","main":"index.js","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"_ENV='local' mocha test/**/*.js"},"repository":{"type":"git","url":"https://git.code.tencent.com/5C24/elpis.git"},"author":{"name":"5C24"},"license":"ISC","dependencies":{"@babel/core":"^7.24.0","@babel/plugin-transform-runtime":"^7.1.0","@babel/preset-env":"^7.4.5","@babel/runtime":"^7.28.4","@element-plus/icons-vue":"^2.3.2","ajv":"^6.10.2","axios":"^0.19.2","babel-loader":"^8.0.4","clean-webpack-plugin":"^0.1.19","consoler":"^0.2.0","css-loader":"^0.23.1","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","echarts":"^5.5.0","element-plus":"^2.3.7","express":"^4.18.2","file-loader":"^6.2.0","generate-password":"^1.7.1","glob":"^7.1.4","html-webpack-inject-attributes-plugin":"^1.0.1","html-webpack-plugin":"^5.5.3","jsonwebtoken":"^9.0.2","knex":"^0.19.0","koa":"2.7.0","koa-bodyparser":"^4.2.1","koa-nunjucks-2":"^3.0.2","koa-router":"^7.4.0","koa-static":"^5.0.0","koa-useragent":"2.0.0","koa2-cors":"^2.0.6","less":"^3.8.1","less-loader":"^11.1.3","lodash":"^4.17.21","log4js":"^6.9.1","md5":"^2.2.1","mini-css-extract-plugin":"^2.7.6","moment":"^2.29.4","mysql2":"^3.16.1","node-schedule":"^2.1.1","nodemon":"^1.19.2","path":"^0.12.7","pinia":"^2.1.6","style-loader":"^0.14.1","superagent":"^8.1.2","terser-webpack-plugin":"^5.3.16","thread-loader":"^4.0.4","url-loader":"^4.1.1","vue":"^3.3.4","vue-json-viewer":"^3.0.4","vue-loader":"^17.2.2","vue-router":"^4.2.4","vue-style-loader":"^4.1.2","vuex":"^4.1.0","webpack":"^5.88.1","webpack-dev-middleware":"^6.1.1","webpack-hot-middleware":"^2.25.4","webpack-merge":"^4.2.1"},"devDependencies":{"assert":"^2.0.0","babel-eslint":"^10.0.2","eslint":"^7.32.0","eslint-plugin-import":"^2.28.1","eslint-plugin-vue":"^9.17.0","ghooks":"~1.0.3","mocha":"^6.1.4","supertest":"^4.0.2","validate-commit-msg":"~2.14.0"},"config":{"ghooks":{"commit-msg":"validate-commit-msg","pre-commit":"npm run lint"}},"_id":"@5c24/elpis@1.0.4","gitHead":"18d8fd895439e00f81ca3d21f68e87d4a8c74615","_nodeVersion":"20.12.1","_npmVersion":"10.5.0","dist":{"integrity":"sha512-qY7cbXT0Wc8ixPro7LomiuQrvwhRwH9BwxCheVRBENttMZ70jefcw0m/DbIuQd9vfHQev3/xccI+IGqC/o9fqg==","shasum":"9e315487604dcf3b92a91ba8dd67afff7627d4be","tarball":"https://registry.npmjs.org/@5c24/elpis/-/elpis-1.0.4.tgz","fileCount":79,"unpackedSize":614965,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF/4LuufY0KlvQj82hovKKzNAT9U+R5T3h5cu6w0f04rAiAq/9GyoP0J8zpjfn1dR9awoTG9goFraITBwEyFHsSl3w=="}]},"_npmUser":{"name":"5c24","email":"You_5c24@163.com"},"directories":{},"maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elpis_1.0.4_1768732875719_0.15062495151005484"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-08T09:50:49.592Z","modified":"2026-01-18T10:41:16.053Z","1.0.0":"2026-01-08T09:50:49.911Z","1.0.1":"2026-01-09T06:51:12.192Z","1.0.2":"2026-01-09T06:56:31.151Z","1.0.3":"2026-01-16T09:13:30.152Z","1.0.4":"2026-01-18T10:41:15.919Z"},"author":{"name":"5C24"},"license":"ISC","repository":{"type":"git","url":"https://git.code.tencent.com/5C24/elpis.git"},"description":"### model配置 ```javascript {   mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构   name: ''; // 名称   desc: ''; // 描述   icon: ''; // 图标   homePage: ''; // 首页(项目配置)   // 头部菜单   menu: [     {       key: '', // 菜单唯一描述       name: '', // 菜单名称       menuType: '', //","maintainers":[{"name":"5c24","email":"You_5c24@163.com"}],"readme":"# elpis\n## 一个企业级应用框架\n\n### model配置\n```javascript\n{\n  mode: 'dashboard'; // 模版类型，不同模版类型对应不一样的模版数据结构\n  name: ''; // 名称\n  desc: ''; // 描述\n  icon: ''; // 图标\n  homePage: ''; // 首页(项目配置)\n  // 头部菜单\n  menu: [\n    {\n      key: '', // 菜单唯一描述\n      name: '', // 菜单名称\n      menuType: '', // 枚举值: group / module\n      // 当 menuType === group\n      subMenu: [\n        {\n          // 可递归 menuItem\n        },\n      ],\n\n      // 当 menuType === module 时，可填\n      moduleType: '', // 枚举值: sider / iframe / schema / custom\n\n      // 当 moduleType === sider 时\n      siderConfig: {\n        menu: [\n          {\n            // 可递归 menuItem(除 moduleType === sider)\n          },\n        ],\n      },\n\n      // 当 moduleType == iframe 时\n      iframeConfig: {\n        path: '', // iframe 路径\n      },\n\n      // 当 moduleType == custom 时\n      customConfig: {\n        path: '', // 自定义路由路径\n      },\n\n      // 当 moduleType == schema 时\n      schemaConfig: {\n        api: '', // 数据源API (遵循 RESTFUL 规范)\n        schema: {\n          // 板块数据结构\n          type: 'object',\n          properties: {\n            key: {\n              ...schema, // 标准 schema 配置\n              type: '', // 字段类型\n              label: '', // 字段的中文名\n              // 字段在 table 中的相关配置\n              tableOption: {\n                ...elTableColumnConfig, // 标准 el-table-column 配置\n                toFixed: 0, // 小数点后保留几位\n                visible: true, // 默认为 true(false时表示不在表单中显示)\n              },\n              // 字段在 search-bar 中的相关配置\n              searchOption: {\n                ...elComponentConfig, // 标准 el-component 配置\n                comType: '', // 配置组件类型 input/select/....\n                default: '', // 默认值\n\n                // comType === 'select'\n                enumList: [], // 下拉框可选项\n\n                // comType === 'dynamicSelect'\n                api: '',\n              },\n              // 字段在不同动态 component 中的相关配置，前缀对应 componentConfig 中的键值\n              // 如：componentConfig.createForm，这里对应 createFormOption\n              // 字段在 createForm 中相关配置\n              createFormOption: {\n                ...elComponentConfig, // 标准 el-component 配置\n                comType: '', // 配置组件类型 input/select/....\n                visible: true, // 是否展示（true/fase） 默认为 true\n                disabled: false, // 是否禁用（true/false） 默认为 false\n                default: '', // 默认值\n\n                // comType === 'selet' 时生效\n                enumList: [], // 枚举列表\n              },\n              // 字段在 editForm 中相关配置\n              editFormOption: {\n                ...elComponentConfig, // 标准 el-component 配置\n                comType: '', // 配置组件类型 input/select/....\n                visible: true, // 是否展示（true/fase） 默认为 true\n                disabled: false, // 是否禁用（true/false） 默认为 false\n                default: '', // 默认值\n\n                // comType === 'selet' 时生效\n                enumList: [], // 枚举列表\n              },\n              detailPanelOption: {\n                ...elComponentConfig, // 标准 el-component 配置\n              },\n            },\n          },\n          required: [], // 标记哪些字段是必填项\n        },\n        // table 相关配置\n        tableConfig: {\n          headerButtons: [\n            {\n              label: '', // 按钮中文名\n              eventKey: '', // 按钮事件名\n              // 按钮事件具体配置\n              eventOption: {\n                // 当 eventKey === 'showComponent' 时生效\n                comName: '', // 组件名称\n              },\n              ...elButtonConfig, // 标准 el-button 配置\n            },\n          ],\n          rowButtons: [\n            {\n              label: '', // 按钮中文名\n              eventKey: '', // 按钮事件名\n              eventOption: {\n                // 当 eventKey === 'showComponent' 时生效\n                comName: '', // 组件名称\n\n                // 当 eventKey === 'remove'\n                params: {\n                  // pramKey = 参数的键值\n                  // rowValueKey = 参数值 格式为 schema::tableKey 的时候，到 table 中找相应的字段\n                  paramKey: rowValueKey,\n                },\n              }, // 按钮事件具体配置\n              ...elButtonConfig, // 标准 el-button 配置\n            },\n          ],\n        },\n        // search-bar 相关配置\n        searchConfig: {},\n        // 动态组件 相关配置\n        componentConfig: {\n          // create-form 表单相关配置\n          createForm: {\n            title: '', // 表单标题\n            saveBtnText: '', // 保存按钮文案\n          },\n          // edit-form 表单相关配置\n          editForm: {\n            mainKey: '', // 表单主键，用于唯一标识要修改的数据对象\n            title: '', // 表单标题\n            saveBtnText: '', // 保存按钮文案\n          },\n          // detail-panel 相关配置\n          detailPanel: {\n            mainKey: '',\n            title: '',\n          },\n          // ...支持动态扩展\n        },\n      },\n    },\n  ];\n}\n```\n\n### 服务端启动\n```javascript\nconst { serverStart } = require('@5c24/elpis');\n\n// 启动 elpis 服务\nconst app = serverStart({});\n```\n\n### 自定义服务端\n- router-schema\n- router\n- controller\n- service\n- extend\n- config\n\n### 前端构建\n```javascript\nconst { frontendBuild } = require('@5c24/elpis');\n\n// 编译构建前端工程\nfrontendBuild(process.env._ENV);\n```\n\n### 自定义页面扩展\n* 在 `app/pages/` 目录下写入口 entry.xxx.js\n\n### dashboard / custom-view 自定义页面扩展\n* 在 `app/pages/dashboard/xxx` 下写页面\n\n### dashboard / schema-view / components 动态组件扩展\n1. 在 `app/pages/dashboard/complex-view/schema-view/components` 下写组件\n2. 配置到 `app/pages/dashboard/complex-view/schema-view/components/component-config.js`\n\n### schema-form 控件扩展\n1. 在 `app/pages/widgets/schema-form/complex-view` 下写控件\n2. 配置到 `app/pages/widgets/schema-form/form-item-config.js`\n\n### schema-search-bar 控件扩展\n1. 在 `app/pages/widgets/schema-search-bar/complex-view` 写控件\n2. 配置到 `app/pages/widgets/schema-search-bar/search-item-config.js`","readmeFilename":"README.md"}