Ryan Wang's Blog

Ryan Wang

  • Ryan Wang

    Shiki 插件支持折叠了。

    {
      "name": "@halo-dev/shiki-code-element",
      "version": "1.4.1",
      "repository": {
    // [!code fold:start]
        "type": "git",
        "url": "https://github.com/halo-sigs/plugin-shiki.git",
        "directory": "shiki-code-element"
    // [!code fold:end]
      },
      "license": "MIT",
      "type": "module",
      "exports": {
    // [!code fold:start]
        ".": {
          "types": "./dist/index.d.ts",
          "import": "./dist/index.js"
        }
    // [!code fold:end]
      },
      "main": "./dist/index.js",
      "module": "./dist/index.js",
      "types": "./dist/index.d.ts",
      "files": [
        "dist"
      ],
      "scripts": {
    // [!code fold:start]
        "build": "tsc && vite build --config vite.lib.config.ts",
        "dev": "vite --config vite.dev.config.ts",
        "prepublishOnly": "pnpm build"
    // [!code fold:end]
      },
      "dependencies": {
        "lit": "^3.3.3"
      },
      "devDependencies": {
    // [!code fold:start]
        "@iconify-json/mingcute": "^1.2.7",
        "@iconify-json/tabler": "^1.2.35",
        "@unocss/reset": "^66.7.4",
        "unocss": "^66.7.4",
        "vite-plugin-dts": "^5.0.3"
    // [!code fold:end]
      },
      "peerDependencies": {
    // [!code fold:start]
        "@shikijs/transformers": "^3 || ^4",
        "shiki": "^3 || ^4"
    // [!code fold:end]
      }
    }
    name: CI
    
    on:
      push:
        branches:
          - main
      pull_request:
        branches:
          - main
    // [!code fold:start]
    jobs:
      ci:
        uses: halo-sigs/reusable-workflows/.github/workflows/plugin-ci.yaml@v4
        with:
          ui-path: "."
          pnpm-version: ""
          node-version: "24"
    

    开发日常

    0
    2026-07-07
  • Ryan Wang

    以前的我:我不接受 AI 改我的代码,我的代码只能我自己掌控!

    现在的我:“左边按钮改成保存”,“切分支,提交 PR”

    吐槽 开发日常

    0
    2026-05-18
  • Ryan Wang

    有点不妙了

    开发日常

    0
    2026-05-13
  • Ryan Wang
    0
    2026-03-19
  • Ryan Wang
    0
    2025-12-10
  • Ryan Wang

    某平台又在对比 React 和 Vue 了,我不太理解这种对比甚至踩一捧一有什么意义。

    在 Halo 这几年的开发中,我也写了不少前端代码,但从未一股脑只用单一框架。每个框架在不同使用场景下都有各自的优势和劣势。

    • Vue:从 Halo 1.0 开始就在控制台使用,简单易上手,生态够用。但早期 VSCode 插件问题太多,严重影响开发体验。不过最近的 3.x 版本已经非常不错了。

    • React / Preact:Halo 官网的应用市场部分在用,不排斥 JSX,相比于 Vue 的 SFC,JSX 对我来说最大的优势就是一个文件可以写多个 React 组件。

    • Lit:用来为 Halo 插件编写 Web 组件。因为 Halo 的前台是纯后端渲染,针对部分需要交互的界面,Web 组件几乎是最好的选择,而 Lit 正是专门的 Web Component 框架。

    • Svelte:最近才开始接触,也用来写 Web 组件。相比 Lit,Svelte 对 CSS 和 CSS 框架支持更好,模板语法也更友好,后续写 Web 组件可能会优先选择 Svelte。

    还有构建工具:

    • Vite:从 Halo 2 开始就在用,相比于原来的 Webpack / Vue CLI 更容易配置,很多东西都已经开箱即用,不过早期的生产/开发不一致的问题也踩了不少坑,最近 Rolldown Vite 一发布 Beta 就用上了,非常不错。

    • Rsbuild:最近才用上,用于构建 Halo 插件的 UI 部分。之前插件 UI 采用 IIFE 格式加载,导致大型插件的 Bundle 体积过大,影响页面加载速度。而 Vite 不支持 IIFE 格式的代码分割,所以切换到 Rsbuild / Rspack。具体可查阅:《使用 Rspack 构建 Halo 插件的前端部分

    所以总结下来就是,不同框架有不同的优劣,针对场景选择合适的即可,不存在用了一个框架就要完全排斥另一个框架,甚至用出优越感的情况。

    开发日常

    0
    2025-11-15
  • Ryan Wang

    前端大一统时刻要来了?

    https://viteplus.dev

    开发日常

    0
    2025-10-12
  • Ryan Wang

    新的代码高亮插件,基于 https://shiki.style/

    https://www.halo.run/store/apps/app-kzloktzn
    import UnocssVitePlugin from "unocss/vite";
    import { defineConfig } from "vite";
    export default defineConfig({
      plugins: [
    // [!code hl:4]
        UnocssVitePlugin({
          configFile: "./uno.config.ts",
          mode: "shadow-dom",
        }),
      ],
    });
    import { defineConfig, presetIcons, presetWind3, presetWind4 } from "unocss";
    
    export default defineConfig({
    // [!code --]
      presets: [presetWind3(), presetIcons()],
    // [!code ++]
      presets: [presetWind4(), presetIcons()],
    });
    import { defineConfig } from "vite";
    export default defineConfig({
      build: {
    // [!code focus:6]
        lib: {
          entry: "./src/index.ts",
          name: "shiki-code",
          fileName: `shiki-code`,
          formats: ["es"],
        },
      },
    });

    开发日常

    0
    2025-09-25
  • Ryan Wang

    Halo AI 助手支持了 RAG 智能问答功能!

    • 内置向量库,无需额外部署。

    • 与 Halo 深度结合,支持为文章和 Docsme 文档创建知识库。

    • 支持权限控制,用于控制用户是否能使用智能问答。

    • 支持覆盖传统搜索弹窗、支持页面悬浮气泡,支持在文章或者页面中嵌入聊天框。

    https://www.halo.run/store/apps/app-riNgb/releases/app-release-zp2sylnn

    开发日常

    0
    2025-09-10
  • Ryan Wang

    快来试试新的评论框。

    开发日常

    1
    2025-08-14