yalc 在本组件库的使用说明

背景与场景

  • 多包组件库(Vue2 + packages/*),希望在不发布 npm 的情况下,在外部项目实时使用最新改动。

  • npm link 不够稳定;yalc 通过本地缓存 + lock 更可靠。

  • 内网/离线环境,可把 yalc 当作本地“私有 registry”。

核心命令速览

  • 发布到本地缓存:yalc publish

  • 推送更新到已安装项目:yalc push <pkgName>

  • 在消费项目安装:yalc add <pkgName>

  • 移除:yalc remove <pkgName>

推荐流程(文字流程图)

  1. 开发/构建:在组件库内修改代码 →(可选)npm run build:dist 产出 lib

  2. 本地发布yalc publish(或进入子包目录 yalc publish

  3. 消费项目接入:消费项目执行 yalc add @tf/modulesnpm install

  4. 迭代更新:组件库继续开发 → yalc push @tf/modules → 消费项目自动更新依赖

  5. 验收/回退:验证功能 → 不再需要时,消费项目 yalc remove @tf/modulesnpm install

若要单独发布子包(如 flow-graph),确保子包有独立 package.json,在子包目录运行 yalc publish / yalc push

yalc 使用流程图

Mermaid 流程图(使用 mermaid-mcp 渲染)

以下流程图使用 mermaid-mcp 服务生成并渲染:

flowchart TD
    A["开发/修改代码"] --> B{"是否需要构建?"}
    B -->|是| C["执行 npm run build:dist"]
    B -->|否| D["保持源码"]
    C --> E["yalc publish"]
    D --> E
    E --> F["在消费项目 yalc add @tf/modules"]
    F --> G["npm install 同步依赖"]
    G --> H["本地调试/验证"]
    H --> I{"有改动?"}
    I -->|是| J["组件库继续开发"]
    J --> K["yalc push @tf/modules"]
    K --> G
    I -->|否| L{"是否需要移除?"}
    L -->|是| M["消费项目 yalc remove @tf/modules"]
    M --> N["npm install 清理锁文件与缓存"]
    L -->|否| O["保持依赖,正常使用"]

流程图:

🎨 在线编辑流程图

流程图说明:

  • 📦 开始节点:开发/修改代码

  • 🔀 判断节点(菱形):是否需要构建、是否有改动、是否需要移除

  • ⚙️ 操作节点(矩形):执行构建、发布、安装等操作

  • 🔄 循环流程:有改动时,通过 yalc push 自动更新依赖,形成开发循环

  • 结束节点:保持依赖正常使用,或清理移除

流程要点:

  1. 开发阶段:可选择构建或直接使用源码

  2. 发布阶段:使用 yalc publish 发布到本地缓存

  3. 消费阶段:在消费项目中 yalc addnpm install

  4. 迭代阶段:使用 yalc push 自动推送更新,无需重新安装

  5. 清理阶段:使用 yalc remove 移除依赖

💡 提示:流程图由 mermaid-mcp 服务自动生成和验证。支持在 Mermaid Chart Playground 中在线编辑和预览。

具体命令示例(本仓库)

# 1) 在组件库根目录(可选构建)
npm run build:dist

# 2) 发布整个库
yalc publish

# 3) 在消费项目中添加
yalc add @tf/modules
npm install

# 4) 后续有改动时,在组件库中推送更新
yalc push @tf/modules

# 5) 消费项目中移除
yalc remove @tf/modules
npm install

注意事项

  • 本仓库已在 devDependencies 中引入 yalc,可用 npx yalc 直接运行。

  • 建议忽略 yalc.lock.yalc/(不要提交到 Git)。

  • 若发布源码而非构建产物,确认消费侧构建链路兼容(本库基于 Vue2、webpack4)。

  • yalc 只分发当前目录内容;是否带构建产物取决于你发布前是否执行了构建。

  • 消费项目如果node_modules有了最新的包但是调试还是原来的代码,一定要记得删除node_modules下的.vite文件夹(vite缓存)。

常见问答

  • 需要每次重装吗? 不需要,改动后执行 yalc push,已安装的消费项目会自动刷新依赖。

  • 可以同时发布多个包吗? 可以,在各自包目录运行 yalc publish,消费端用对应包名 yalc add

  • 如何确认发布的是构建产物还是源码? yalc 会打包当前目录;若需产物,请先构建再 yalc publish