{"_id":"@acheng1996/elpis","name":"@acheng1996/elpis","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@acheng1996/elpis","version":"1.0.0","description":"```js\r const a = {\r   mode: 'dashboard', // 模板类型，不同类型对应不一样的模板数据结构\r   name: '', // 名称\r   desc: '', // 描述\r   icon: '', // icon\r   homePage: '', // 首页（项目配置）\r   // 头部菜单\r   menu: [\r     {\r       key: '', // 菜单唯一描述\r       name: '', // 菜单名称\r       menuType: '', ","main":"index.js","publishConfig":{"access":"public"},"scripts":{"prepare":"husky","lint":"eslint --quiet --ext js,vue .","test":"set _ENV=local&& mocha 'test/**/*.js'"},"repository":{"type":"git","url":"https://git.code.tencent.com/acheng/Elpis.git"},"author":{"name":"acheng"},"license":"ISC","dependencies":{"@babel/core":"^7.24.0","@element-plus/icons-vue":"^2.3.2","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","@commitlint/cli":"^20.1.0","@commitlint/config-conventional":"^20.0.0","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","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","husky":"^9.1.7","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.26.1","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"},"husky":{"hooksDir":".husky"},"_id":"@acheng1996/elpis@1.0.0","gitHead":"542bdd6eb24edc1c501000ae3a0bbd3db802acbd","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-QwwwPGAYYE6zlY1d4eDqdGCd7cVRQGmLuH4VvBwnXdmdgrefbmG+lIGCUeJUN0Bj+t/LeI+YR6PP6NnWupH1cw==","shasum":"1694ef57750f8f2edc35a5ded863edcdc7120850","tarball":"https://registry.npmjs.org/@acheng1996/elpis/-/elpis-1.0.0.tgz","fileCount":82,"unpackedSize":1217398,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFJqBd2dHqScZmTApiGYTq21KiDRhRDn+NIXncXEjdWNAiEAg9kJwqdgLuw/03eZay388sdocR/j6XMkKOhj4Lk8J00="}]},"_npmUser":{"name":"acheng1996","email":"acheng19960928@163.com"},"directories":{},"maintainers":[{"name":"acheng1996","email":"acheng19960928@163.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/elpis_1.0.0_1769002902192_0.013385402538201419"},"_hasShrinkwrap":false}},"time":{"created":"2026-01-21T13:41:42.091Z","1.0.0":"2026-01-21T13:41:42.401Z","modified":"2026-01-21T13:41:42.624Z"},"maintainers":[{"name":"acheng1996","email":"acheng19960928@163.com"}],"description":"```js\r const a = {\r   mode: 'dashboard', // 模板类型，不同类型对应不一样的模板数据结构\r   name: '', // 名称\r   desc: '', // 描述\r   icon: '', // icon\r   homePage: '', // 首页（项目配置）\r   // 头部菜单\r   menu: [\r     {\r       key: '', // 菜单唯一描述\r       name: '', // 菜单名称\r       menuType: '', ","repository":{"type":"git","url":"https://git.code.tencent.com/acheng/Elpis.git"},"author":{"name":"acheng"},"license":"ISC","readme":"# Elpis\r\n\r\n## 一个企业级应用, 通过 全栈实现\r\n\r\n### model 配置\r\n\r\n```js\r\nconst a = {\r\n  mode: 'dashboard', // 模板类型，不同类型对应不一样的模板数据结构\r\n  name: '', // 名称\r\n  desc: '', // 描述\r\n  icon: '', // icon\r\n  homePage: '', // 首页（项目配置）\r\n  // 头部菜单\r\n  menu: [\r\n    {\r\n      key: '', // 菜单唯一描述\r\n      name: '', // 菜单名称\r\n      menuType: '', // 枚举值: group / module\r\n\r\n      // menuType == group 时，可填\r\n      subMenu: [\r\n        {\r\n          // 可递归 menuItem\r\n        }\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          {\r\n            // 可递归menuItem (除 moduleType = sider)\r\n          }\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/user', // 数据源api(遵循 RESTFUL 规范)\r\n        schema: {\r\n          // 板块数据结构\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: 2, // 保留几位小数\r\n                visible: true // 是否在table中显示, 默认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                    value: '',\r\n                    label: ''\r\n                  }\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则不显示\r\n                disabled: false, // 是否禁用, 默认false， 配置true则禁用\r\n                default: '', // 默认值\r\n\r\n                // 1. comType = select 时\r\n                enumList: [] // 枚举列表\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则不显示\r\n                disabled: false, // 是否禁用, 默认false， 配置true则禁用\r\n                default: '', // 默认值\r\n\r\n                // 1. comType = select 时\r\n                enumList: [] // 枚举列表\r\n              },\r\n              // detail panel 相关配置\r\n              detailPanelOption: {\r\n                ...elComponentConfig // 标准 el-component 配置\r\n              }\r\n            }\r\n            // ...\r\n          },\r\n          required: [] // 必填字段\r\n        },\r\n        // table相关配置\r\n        tableConfig: {\r\n          headerButtons: [\r\n            {\r\n              label: '', // 中文名\r\n              eventKey: '', // 按钮事件名\r\n              // 按钮具体 option\r\n              eventOption: {\r\n                // 当eventKey === showComponent时\r\n                comName: '' // 组件名称\r\n              },\r\n              ...elButtonConfig // 标准 el-button 配置\r\n            }\r\n          ],\r\n          rowButtons: [\r\n            {\r\n              label: '', // 中文名\r\n              eventKey: '', // 按钮事件名\r\n              eventOption: {\r\n                // 当eventKey === showComponent时\r\n                comName: '', // 组件名称\r\n\r\n                // 按钮具体 option\r\n                params: {\r\n                  // eventKey = remove时\r\n                  // 当格式为 schema::tableKey 时候，到table中找相应字段\r\n                  product_id: 'schema::product_id'\r\n                }\r\n              },\r\n              ...elButtonConfig // 标准 el-button 配置\r\n            }\r\n          ]\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          // 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          }\r\n          // ...支持用户动态扩展\r\n        }\r\n      }\r\n    }\r\n  ]\r\n};\r\n```\r\n\r\n### 服务端启动\r\n\r\n```js\r\nconst { serverStart } = require('@acheng1996/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```js\r\nconst { frontendBuild } = require('@acheng1996/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/widgets/schema-form/complex-view` 下写控件\r\n2. 配置到 `app/widgets/schema-form/form-item-config.js`\r\n\r\n### schema-search-bar 控件扩展\r\n\r\n1. 在 `app/widgets/schema-search-bar/complex-view` 下写控件\r\n2. 配置到 `app/widgets/schema-search-bar/search-item-config.js`\r\n","readmeFilename":"README.md","_rev":"1-ecf75c9ea1b89a4f1f49bae47dd089b1"}