Go to file
Ryan Wang 54755c5842
refactor: router and menu generation (#651)
#### What type of PR is this?

/kind api-change
/kind improvement
/milestone 2.0

#### What this PR does / why we need it:

Ref https://github.com/halo-dev/halo/issues/2595

重构路由和侧边菜单生成的逻辑,**注意,此 PR 对插件的 Console 入口文件中的路由和菜单定义包含破坏性更新。**

1. 移除 `definePlugin` 方法的 `menus` 字段,改为在 route 的 meta 中定义。
2. 将 `RoutesMenu` 组件从 `@halo-dev/components` 包中移出。
3. 将 `BasicLayout` 组件从 `@halo-dev/console-shared` 包中移出。

定义路由的方式:

```ts
import { definePlugin } from "@halo-dev/console-shared";
import BasicLayout from "@/layouts/BasicLayout.vue";
import AttachmentList from "./AttachmentList.vue";
import AttachmentSelectorModal from "./components/AttachmentSelectorModal.vue";
import { IconFolder } from "@halo-dev/components";
import { markRaw } from "vue";

export default definePlugin({
  name: "attachmentModule",
  components: [AttachmentSelectorModal],
  routes: [
    {
      path: "/attachments",
      component: BasicLayout,
      children: [
        {
          path: "",
          name: "Attachments",
          component: AttachmentList,
          meta: {
            title: "附件",
            permissions: ["system:attachments:view"],
            menu: {
              name: "附件",
              group: "内容",
              icon: markRaw(IconFolder),
              priority: 4,
              mobile: true,
            },
          },
        },
      ],
    },
  ],
});
```

menu 字段类型:

```ts
interface RouteMeta {
  title?: string;
  searchable?: boolean;
  permissions?: string[];
  menu?: {
    name: string;
    group?: string;
    icon?: Component;
    priority: number;
    mobile?: true;
  };
}
```

插件适配需要做的改动:

1. 移除 `definePlugin` 中的 menus 字段。
2. 在需要添加到菜单的 route 中提供 `meta.menu` 对象,可参考上方的 menu 字段类型。

详细文档可查阅:https://github.com/ruibaby/halo-console/tree/refactor/route-map-setting/docs/routes-generation

todolist:

- [x] 完善预设的菜单分组定义。
- [x] 绑定权限,根据权限决定是否需要将路由添加到菜单。
- [x] 优化菜单排序的定义方式。

#### Which issue(s) this PR fixes:

Fixes https://github.com/halo-dev/halo/issues/2595

#### Special notes for your reviewer:

/cc @halo-dev/sig-halo-console 

测试方式:

1. 需要 `pnpm build:packages`
2. 测试后台的菜单及路由是否有异常。
3. 新建角色测试路由和菜单对权限的绑定。
4. 按照 https://github.com/ruibaby/halo-console/tree/refactor/route-map-setting/docs/routes-generation 文档,创建插件,测试插件添加路由和菜单是否正常。

#### Does this PR introduce a user-facing change?

```release-note
重构路由和侧边菜单生成的逻辑。
```
2022-10-19 08:54:13 +00:00
.changeset refactor: rename admin to console (#634) 2022-10-09 06:56:33 +00:00
.github chore: add pull request template and remove auto assign config file (#635) 2022-10-09 06:58:29 +00:00
.husky chore: update husky pre-commit file 2022-08-12 16:24:47 +08:00
.vscode chore: update vscode extension recommendations 2022-08-31 23:35:46 +08:00
cypress chore: next major version base project (#478) 2022-03-03 18:26:15 +08:00
docs refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
packages refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
public feat: change favicon to halo logo 2022-09-27 17:30:14 +08:00
src refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
.dockerignore Add dockerignore file to ignore node_modules folder while building docker image (#588) 2022-07-19 07:50:05 +00:00
.editorconfig refactor: upgrade codemirror version. (#354) 2021-09-15 21:44:00 +08:00
.env.development refactor: set the root path of the development environment to /console (#638) 2022-10-11 15:32:14 +00:00
.env.production refactor: improve login-related logic (#617) 2022-09-22 12:46:12 +00:00
.eslintrc.cjs chore: use vue/vue3-recommended eslint plugin 2022-08-30 17:30:43 +08:00
.gitignore chore: use pnpm's workspace feature to manage base components (#579) 2022-06-14 15:56:55 +08:00
.gitpod.yml chore: update gitpod config 2022-09-09 19:17:22 +08:00
.npmignore refactor: refactor post preview and private post view. 2019-12-19 17:50:23 +08:00
.npmrc chore: bump dependencies 2022-08-23 11:10:29 +08:00
Dockerfile Refactor GitHub workflow configuration (#589) 2022-07-19 19:31:11 +08:00
LICENSE release: 1.2.0. 2020-01-05 22:39:18 +08:00
Makefile Add Makefile for convenient operations (#641) 2022-10-13 10:00:16 +00:00
OWNERS chore: create OWNERS file (#548) 2022-04-12 14:16:03 +08:00
README.md docs: update readme for Halo 2.0 (#630) 2022-09-30 09:58:18 +00:00
cypress.json chore: next major version base project (#478) 2022-03-03 18:26:15 +08:00
env.d.ts refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
index.html refactor: rename admin to console (#634) 2022-10-09 06:56:33 +00:00
package.json refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
pnpm-lock.yaml refactor: router and menu generation (#651) 2022-10-19 08:54:13 +00:00
pnpm-workspace.yaml chore: use pnpm's workspace feature to manage base components (#579) 2022-06-14 15:56:55 +08:00
postcss.config.js chore: configure tailwind css (#504) 2022-03-11 11:51:40 +08:00
prettier.config.js chore: add tailwindcss prettier plugin and reformat code 2022-05-29 23:55:06 +08:00
tailwind.config.js feat: add comment management support (#612) 2022-09-19 09:26:50 +00:00
tsconfig.app.json feat: add attachment management support (#600) 2022-09-04 17:06:11 +00:00
tsconfig.json chore: next major version base project (#478) 2022-03-03 18:26:15 +08:00
tsconfig.vite-config.json refactor: external static libraries 2022-09-26 13:16:40 +08:00
tsconfig.vitest.json chore: next major version base project (#478) 2022-03-03 18:26:15 +08:00
vite.config.ts refactor: external static libraries 2022-09-26 13:16:40 +08:00
vitest.config.ts refactor: vitest config 2022-08-01 17:41:39 +08:00

README.md

README

Halo logo

Halo 2.0 的管理端项目(原 halo-admin

GitHub release GitHub GitHub last commit GitHub Workflow Status Gitpod ready-to-code


注意

当前分支为 Halo 2.0 的 Console 端开发分支,目前 Halo 2.0 处于 Alpha 测试阶段,不建议从 1.5 直接升级也不建议在生产环境使用。Console 端稳定版本Halo 1.5)请查阅以下地址:

当前仓库已经将 halo-admin 改为了 console。但对于 Halo 1.x 版本,依旧保持 halo-admin 的概念。

开发环境运行

# pnpm@7.0.0+
npm install -g pnpm
pnpm install 
pnpm build:packages
pnpm dev

生产构建

pnpm build

状态

Repobeats analytics