{"_id":"@david-yjy/elpis","name":"@david-yjy/elpis","dist-tags":{"latest":"1.0.1"},"versions":{"1.0.1":{"name":"@david-yjy/elpis","version":"1.0.1","description":"``` javascript\r {\r   mode: 'dashboard', // 模板类型，不同模板类型对应不一样的模板数据结构\r     name: '', // 名称\r       desc: '', // 描述\r         icon: '', // 图标\r           homePage: '', // 首页(项目配置)\r             // 头部菜单\r             menu: [{\r               key: '', // 菜单唯一描述\r     ","main":"index.js","scripts":{"lint":"eslint --quiet --ext js,vue .","test":"cross-env _ENV=local mocha 'test/**/*.js'"},"repository":{"type":"git","url":"https://e.coding.net/g-tqmp8965/elpis/elpis.git"},"author":{"name":"David"},"license":"ISC","dependencies":{"@babel/core":"^7.24.0","@element-plus/icons-vue":"^2.3.1","ajv":"^6.10.2","axios":"^0.19.2","echarts":"^5.5.0","element-plus":"^2.3.7","generate-password":"^1.7.1","glob":"^7.1.4","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","lodash":"^4.17.21","log4js":"^6.9.1","md5":"^2.2.1","moment":"^2.29.4","mysql":"^2.18.1","node-schedule":"^2.1.1","nodemon":"^1.19.2","path":"^0.12.7","pinia":"^2.1.6","superagent":"^8.1.2","vue":"^3.3.4","vue-json-viewer":"^3.0.4","vue-router":"^4.2.4","vuex":"^4.1.0","@babel/plugin-transform-runtime":"^7.1.0","@babel/preset-env":"^7.4.5","babel-loader":"^8.0.4","clean-webpack-plugin":"^0.1.19","consoler":"^0.2.0","cross-env":"^7.0.3","css-loader":"^0.23.1","css-minimizer-webpack-plugin":"^5.0.1","directory-named-webpack-plugin":"^4.0.1","express":"^4.18.2","file-loader":"^6.2.0","happypack":"^5.0.1","html-webpack-inject-attributes-plugin":"^1.0.1","html-webpack-plugin":"^5.5.3","less-loader":"^11.1.3","mini-css-extract-plugin":"^2.7.6","style-loader":"^0.14.1","terser-webpack-plugin":"^2.3.5","url-loader":"^4.1.1","vue-loader":"^17.2.2","vue-style-loader":"^4.1.2","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":"@david-yjy/elpis@1.0.1","gitHead":"c27713e96d5134bf01dfdf74a7e959d10f82b485","_nodeVersion":"18.19.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-XaQLRoJbUQuD9Sf0ExcZjS18eno8VLAmp4Go5ixjaSNVKtzrvln4zNZ44WxFzlRMKh8+WQdCHqf+ib5Sq7XjUw==","shasum":"19840bc5bf8bca78281ecf7a3f1532e094ff32ca","tarball":"https://registry.npmjs.org/@david-yjy/elpis/-/elpis-1.0.1.tgz","fileCount":78,"unpackedSize":967412,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIBOuLjanGiWZefHvdpQGJ5gPweaFaZHDDyi0T6ymtQNMAiB5WkBEnfAoz4MhvTbt9bkxIRSPOcRMomSQOzpqDRy//A=="}]},"_npmUser":{"name":"david-yjy","email":"1123188756@qq.com"},"directories":{},"maintainers":[{"name":"david-yjy","email":"1123188756@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elpis_1.0.1_1767247378645_0.7441277866836664"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-01T06:02:58.548Z","1.0.1":"2026-01-01T06:02:58.847Z","modified":"2026-01-01T06:02:59.127Z"},"maintainers":[{"name":"david-yjy","email":"1123188756@qq.com"}],"description":"``` javascript\r {\r   mode: 'dashboard', // 模板类型，不同模板类型对应不一样的模板数据结构\r     name: '', // 名称\r       desc: '', // 描述\r         icon: '', // 图标\r           homePage: '', // 首页(项目配置)\r             // 头部菜单\r             menu: [{\r               key: '', // 菜单唯一描述\r     ","repository":{"type":"git","url":"https://e.coding.net/g-tqmp8965/elpis/elpis.git"},"author":{"name":"David"},"license":"ISC","readme":"# elpis\r\n\r\n## 一个企业级应用框架，通过全栈实现\r\n\r\n### model配置\r\n\r\n``` javascript\r\n{\r\n  mode: 'dashboard', // 模板类型，不同模板类型对应不一样的模板数据结构\r\n    name: '', // 名称\r\n      desc: '', // 描述\r\n        icon: '', // 图标\r\n          homePage: '', // 首页(项目配置)\r\n            // 头部菜单\r\n            menu: [{\r\n              key: '', // 菜单唯一描述\r\n              name: '', // 菜单名称\r\n              menuType: '', // 枚举值: group / module\r\n\r\n              // 当 menuType 为 group 时，可填\r\n              subMenu: [{\r\n              }, ...],\r\n\r\n              // 当 menuType 为 module 时，可填\r\n              moduleType: '', // 枚举值: sider/iframe/custom/schema\r\n\r\n              // 当 moduleType 为 sider 时\r\n              siderConfig: {\r\n                menu: [{\r\n                  // 可递归 menuItem(除 moduleType 为 sider)\r\n                }, ...]\r\n              },\r\n\r\n              // 当 moduleType 为 iframe 时\r\n              iframeConfig: {\r\n                path: '', // iframe 路径\r\n              },\r\n\r\n              // 当 moduleType 为 custom 时\r\n              customConfig: {\r\n                path: '', // 自定义路径\r\n              },\r\n\r\n              // 当 moduleType 为 schema 时\r\n              schemaConfig: {\r\n                api: '', // 数据源API (遵循 RESTful 规范)\r\n                schema: { // 板块数据结构\r\n                  type: 'object',\r\n                  properties: {\r\n                    key: {\r\n                      ...schema, // 标准 schema 配置\r\n                      type: '', // 字段类型\r\n                      label: '', // 字段的中文名\r\n                      // 字段在 table 中的相关配置\r\n                      tableOption: {\r\n                        ...elTableColumnConfig, // 标准 el-table-column 配置\r\n                        toFixed: 0, // 保留小数后几位\r\n                        visible: true, // 默认为 true （false时，表示不在表单中显示）\r\n                      },\r\n                      // 字段在 search-bar 中的相关配置\r\n                      searchOption: {\r\n                        ...elComponentConfig, // 标准 el-component-column 配置\r\n                        comType: '', // 配置组件类型 input / select / ...\r\n                        default: '', // 默认值\r\n\r\n                        // 当 comType 为 select 时\r\n                        enumList: [], // 下拉框可选项\r\n\r\n                        // 当 comType 为 dynamicSelect 时\r\n                        api: '', // 下拉框可选项的 API\r\n                      },\r\n                      // 字段在不同动态 component 中的相关配置，前缀对应 componentConfig 中的键值\r\n                      // 如：componentConfig.createForm,这里对应 createFormOption\r\n                      // 字段在 createForm 中相关配置\r\n                      createFormOption: {\r\n                        ...elComponentConfig, // 标准 el-component 配置\r\n                        comType: '', // 控件类型 input/select/input-number\r\n                        visible: true, // 是否显示(true/false) 默认true\r\n                        disabled: false, // 是否禁用(true/false) 默认false\r\n                        default: '', // 默认值\r\n\r\n                        // 当 comType 为 select 时\r\n                        enumList: [], // 枚举列表\r\n                      },\r\n\r\n                      // 字段在 editForm 中相关配置\r\n                      editFormOption: {\r\n                        ...elComponentConfig, // 标准 el-component 配置\r\n                        comType: '', // 控件类型 input/select/input-number\r\n                        visible: true, // 是否显示(true/false) 默认true\r\n                        disabled: false, // 是否禁用(true/false) 默认false\r\n                        default: '', // 默认值\r\n\r\n                        // 当 comType 为 select 时\r\n                        enumList: [], // 枚举列表\r\n                      },\r\n                      detailPanelOption: {\r\n                        ...elComponentConfig, // 标准 el-component 配置\r\n                        // comType: '', // 控件类型 input/select/input-number\r\n                        // visible: true, // 是否显示(true/false) 默认true\r\n                        // disabled: false, // 是否禁用(true/false) 默认false\r\n                        // default: '', // 默认值\r\n                      },\r\n                    },\r\n                    ...\r\n                  },\r\n                  required: [] // 标记哪些字段是必填项\r\n                },\r\n                // table 相关配置\r\n                tableConfig: {\r\n                  headerButtons: [{\r\n                    label: '', // 按钮名称\r\n                    eventKey: '', // 按钮事件名\r\n                    // 按钮事件具体配置\r\n                    eventOption: {\r\n                      // 当 eventKey 为 'showComponent' 时\r\n                      comName: '', // 组件名称\r\n                    },\r\n                    ...elButtonConfig, // 标准 el-button 配置\r\n                  }...],\r\n                  rowButtons: [{\r\n                    label: '', // 按钮名称\r\n                    eventKey: '', // 按钮事件名\r\n                    eventOption: {\r\n                      // 当 eventKey 为 'showComponent' 时\r\n                      comName: '', // 组件名称\r\n\r\n                      // 当 eventKey 为 remove 时，可填\r\n                      params: {\r\n                        // paramKey = 参数的键值\r\n                        // rowValueKey = 参数值, 格式为 schema::tableKey 的时候，到 table 中找到对应的字段\r\n                        paramKey: rowValueKey,\r\n                      },\r\n                    }, // 按钮事件配置\r\n                    ...elButtonConfig, // 标准 el-button 配置\r\n                  }...],\r\n                },// search-bar 相关配置\r\n                searchConfig: {},\r\n                // 动态组件 相关配置\r\n                componentConfig: {\r\n                  // create-form 表单相关配置\r\n                  createForm: {\r\n                    title: '', // 表单标题\r\n                    saveBtnText: '', // 保存按钮文案\r\n                  },\r\n\r\n                  // edit-form 表单相关配置\r\n                  editForm: {\r\n                    mainKey: '', // 表单主键，用于唯一标识要修改的数据对象\r\n                    title: '', // 表单标题\r\n                    saveBtnText: '', // 保存按钮文案\r\n                  },\r\n                  // detail-panel 相关配置\r\n                  detailPanel: {\r\n                    mainKey: '', // 表单主键，用于唯一标识要修改的数据对象\r\n                    title: '', // 表单标题\r\n                  },\r\n                  // ...支持用户动态拓展\r\n                }\r\n              }\r\n            }, ...]\r\n}\r\n```\r\n\r\n### 服务端启动\r\n\r\n``` javascript\r\nconst {\r\n  serverStart\r\n} = require('@david-yjy/elpis');\r\n\r\n// 启动 elpis 服务\r\nconst app = serverStart({})\r\n```\r\n\r\n### 自定义服务端\r\n\r\n- router-schema\r\n- router\r\n- controller\r\n- service\r\n- extend\r\n- config\r\n\r\n### 前端构建\r\n\r\n``` javascript\r\nconst {\r\n  frontendBuild\r\n} = require('@david-yjy/elpis');\r\n\r\n// 编译构建前端工程\r\nfrontendBuild(process.env._ENV);\r\n```\r\n\r\n### 自定义页面扩展\r\n\r\n- 在 `app/pages` 目录下写入口 entry.xxx.js\r\n\r\n### dashboard / custom-view 自定义页面扩展\r\n\r\n- 在 `app/pages/dashboard/xxx` 下写页面\r\n\r\n### dashboard / schema-view /components 动态组件扩展\r\n\r\n1. 在 `app/pages/dashboard/complex-view/schema-view/components` 下写组件\r\n2. 配置到`app/pages/dashboard/complex-view/schema-view/components/component-config.js` 中\r\n\r\n### schema-form 控件扩展\r\n\r\n1. 在 `app/pages/widgets/schema-form/complex-view` 下写控件\r\n2. 配置到 `app/pages/widgets/schema-form/form-item-config.js`\r\n\r\n### schema-search-bar 控件扩展\r\n1. 在`app/pages/widgets/schema-search-bar/complex-view` 下写控件\r\n2. 配置到 `app/pages/widgets/schema-search-bar/search-bar-config.js`\r\n","readmeFilename":"README.md","_rev":"1-95754c7492cb2fe7ee84e2467bed3543"}