{"_id":"@bpromote/dsl-admin","name":"@bpromote/dsl-admin","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@bpromote/dsl-admin","version":"1.0.0","description":"`@bpromote/dsl-admin` 是一个全栈实现的企业级应用框架，通过结合 JSON - Schema 提供了强大的 DSL（领域特定语言）配置能力，能够帮助开发者快速搭建和定制企业级应用。通过灵活的配置和扩展机制，开发者可以根据不同的业务需求轻松定制页面、菜单、数据结构等。","main":"index.js","scripts":{"test":"cross-env _ENV=local mocha test/**/*.js","lint":"eslint --quiet --ext js,vue ."},"repository":{"type":"git"},"author":{"name":"bpromote"},"license":"ISC","dependencies":{"@babel/core":"^7.24.0","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":"@bpromote/dsl-admin@1.0.0","_nodeVersion":"18.19.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-EwkxL0c3iogiguOZFizWhvEVnroSeDRkswhNXbVAPF53rwC3/AAl/KBOIypzrOaKshrJznxdLrYeDQAme0nuoA==","shasum":"3c80fc5f964d94c534a228d95f820d6994985b28","tarball":"https://registry.npmjs.org/@bpromote/dsl-admin/-/dsl-admin-1.0.0.tgz","fileCount":81,"unpackedSize":236713,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQCN7p5Xs7hoBnpvAdoPKu3qdyFx/2JRgx8eLh7uYo9neAIgf/affIoNIgYqvvhTS1ZfgpN45raQVbsbV5GBtg9Hj2w="}]},"_npmUser":{"name":"bpromote","email":"2660921588@qq.com"},"directories":{},"maintainers":[{"name":"bpromote","email":"2660921588@qq.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsl-admin_1.0.0_1742571550595_0.45114120985749473"},"_hasShrinkwrap":false}},"time":{"created":"2025-03-21T15:39:10.498Z","1.0.0":"2025-03-21T15:39:10.783Z","modified":"2025-03-21T15:39:11.034Z"},"maintainers":[{"name":"bpromote","email":"2660921588@qq.com"}],"description":"`@bpromote/dsl-admin` 是一个全栈实现的企业级应用框架，通过结合 JSON - Schema 提供了强大的 DSL（领域特定语言）配置能力，能够帮助开发者快速搭建和定制企业级应用。通过灵活的配置和扩展机制，开发者可以根据不同的业务需求轻松定制页面、菜单、数据结构等。","repository":{"type":"git"},"author":{"name":"bpromote"},"license":"ISC","readme":"# @bpromote/dsl-admin\r\n\r\n## 简介\r\n\r\n`@bpromote/dsl-admin` 是一个全栈实现的企业级应用框架，通过结合 JSON - Schema 提供了强大的 DSL（领域特定语言）配置能力，能够帮助开发者快速搭建和定制企业级应用。通过灵活的配置和扩展机制，开发者可以根据不同的业务需求轻松定制页面、菜单、数据结构等。\r\n\r\n## DSL 配置\r\n\r\n### 整体结构\r\n\r\nDSL 配置是框架的核心，用于定义应用的各个方面，包括模板类型、菜单、数据结构等。以下是一个完整的 DSL 配置示例：\r\n\r\n```js\r\n{\r\n  \"mode\": \"dashboard\",\r\n  \"name\": \"\",\r\n  \"desc\": \"\",\r\n  \"icon\": \"\",\r\n  \"homePage\": \"\",\r\n  \"menu\": [\r\n    {\r\n      \"key\": \"\",\r\n      \"name\": \"\",\r\n      \"menuType\": \"\",\r\n      \"subMenu\": [\r\n        {\r\n          // 可递归的菜单项\r\n        }\r\n      ],\r\n      \"moduleType\": \"\",\r\n      \"siderConfig\": {\r\n        \"menu\": [\r\n          {\r\n            // 可递归的菜单项（除 moduleType === sider）\r\n          }\r\n        ]\r\n      },\r\n      \"iframeConfig\": {\r\n        \"path\": \"\"\r\n      },\r\n      \"customConfig\": {\r\n        \"path\": \"\"\r\n      },\r\n      \"schemaConfig\": {\r\n        \"api\": \"\",\r\n        \"schema\": {\r\n          \"type\": \"object\",\r\n          \"properties\": {\r\n            \"key\": {\r\n              \"type\": \"\",\r\n              \"label\": \"\",\r\n              \"tableOption\": {\r\n                \"toFixed\": 0,\r\n                \"visible\": true\r\n              },\r\n              \"searchOption\": {\r\n                \"comType\": \"\",\r\n                \"default\": \"\",\r\n                \"enumList\": [],\r\n                \"api\": \"\"\r\n              },\r\n              \"createFormOption\": {\r\n                \"comType\": \"\",\r\n                \"visible\": true,\r\n                \"disabled\": false,\r\n                \"enumList\": []\r\n              },\r\n              \"editFormOption\": {\r\n                \"comType\": \"\",\r\n                \"visible\": true,\r\n                \"disabled\": false,\r\n                \"default\": \"\",\r\n                \"enumList\": []\r\n              },\r\n              \"detailPanelOption\": {\r\n                \"comType\": \"\",\r\n                \"disabled\": false,\r\n                \"default\": \"\",\r\n                \"enumList\": []\r\n              }\r\n            }\r\n          },\r\n          \"required\": []\r\n        },\r\n        \"tableConfig\": {\r\n          \"headerButtons\": [\r\n            {\r\n              \"label\": \"\",\r\n              \"eventKey\": \"\",\r\n              \"eventOption\": {\r\n                \"comName\": \"\"\r\n              }\r\n            }\r\n          ],\r\n          \"rowButtons\": [\r\n            {\r\n              \"label\": \"\",\r\n              \"eventKey\": \"\",\r\n              \"eventOption\": {\r\n                \"params\": {\r\n                  \"paramKey\": \"rowValueKey\"\r\n                }\r\n              }\r\n            }\r\n          ]\r\n        },\r\n        \"searchConfig\": {},\r\n        \"componentConfig\": {\r\n          \"createForm\": {\r\n            \"title\": \"\",\r\n            \"saveBtnText\": \"\"\r\n          },\r\n          \"editForm\": {\r\n            \"mainKey\": \"\",\r\n            \"title\": \"\",\r\n            \"saveBtnText\": \"\"\r\n          },\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- **`mode`**：模板类型，不同的类型会渲染不同的页面，例如 `dashboard` 类型可能会渲染仪表盘页面。\r\n- **`name`**：模板的名称，方便识别和管理。\r\n- **`desc`**：模板的描述信息，用于记录模板的用途和特点。\r\n- **`icon`**：模板对应的图标，可用于界面展示。\r\n- **`homePage`**：应用的首页地址。\r\n- **`menu`**：头部菜单的配置数组，每个菜单项包含以下属性：\r\n  - **`key`**：菜单的唯一标识，用于区分不同的菜单项。\r\n  - **`name`**：菜单的显示名称。\r\n  - **`menuType`**：菜单类型，可选值为 `group` / `module`等等 。\r\n    - 当 `menuType` 为 `group` 时，可配置 `subMenu` 数组，用于创建子菜单。\r\n    - 当 `menuType` 为 `module` 时，可配置 `moduleType`，其可选值为 `iframe`、`custom`、`schema`、`sider`等等...\r\n      - **`siderConfig`**：当 `moduleType` 为 `sider` 时，配置侧边栏菜单。\r\n      - **`iframeConfig`**：当 `moduleType` 为 `iframe` 时，配置 iframe 的地址。\r\n      - **`customConfig`**：当 `moduleType` 为 `custom` 时，配置自定义路径。\r\n      - **`schemaConfig`**：当 `moduleType` 为 `schema` 时，配置数据结构、表格、搜索栏和动态组件等。\r\n        - **`api`**：数据源 API，需遵循 RESTful 规范。\r\n        - **`schema`**：板块的数据结构，包含字段的类型、标签、表格和搜索栏的配置等。\r\n        - **`tableConfig`**：表格的配置，包括表头按钮和行按钮。\r\n        - **`searchConfig`**：搜索栏的配置。\r\n        - **`componentConfig`**：动态组件的配置，如创建表单、编辑表单和详情面板等。\r\n\r\n## 服务端启动\r\n\r\n要启动 `dsl-admin` 服务，可使用以下代码：\r\n\r\n```javascript\r\nconst { serverStart } = require(\"@bpromote/dsl-admin\");\r\n\r\n// 启动 dsl-admin 服务\r\nconst app = serverStart({});\r\n```\r\n\r\n这段代码从 `@bpromote/dsl-admin` 模块中引入 `serverStart` 函数，并调用该函数启动服务。\r\n\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- **`middleware`**\r\n\r\n## 前端构建\r\n\r\n使用以下代码编译构建前端工程：\r\n\r\n```javascript\r\nconst { frontendBuild } = require(\"@bpromote/dsl-admin\");\r\n\r\n// 编译构建前端工程\r\nfrontendBuild(process.env._ENV);\r\n```\r\n\r\n### 注意事项\r\n\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对于 `dashboard` 或 `custom-view` 的自定义页面扩展，可在 `app/pages/dashboard/xxx` 目录下编写页面代码。\r\n\r\n### `dashboard` / `schema-view` / `components` 动态组件扩展\r\n\r\n1. 在 `app/pages/dashboard/schema-view/components` 目录下编写组件代码。\r\n2. 将组件配置到 `app/pages/dashboard/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\r\n通过以上的配置和扩展方式，你可以充分发挥 `@bpromote/dsl-admin` 框架的优势，快速搭建和定制符合企业需求的应用。\r\n","readmeFilename":"README.md","_rev":"1-cf1046c65748cabfc9a2b88ec9b4e7b7"}