npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@investravis.com/hexo-goose-builder

v1.0.0

Published

An exploratory plugin that aims to introduce a theme builder for Hexo, which supports modular development in the theme building process and supports popular ESM scripts and TailwindCSS, etc.

Readme

🦢 Hexo Goose Builder

🚀 现代化的 Hexo 主题构建工具
为 Hexo 博客提供完整的现代前端工程化解决方案,支持组件化开发、自动化构建和智能模式切换。

npm version license node version

✨ 特色功能

🏗️ 现代化构建体验

  • 🎯 智能模式切换 - 自动识别 Hexo 执行模式(server/generate/deploy),提供针对性优化
  • 📦 开箱即用 - 零配置启动,支持 TailwindCSS 和现代 JavaScript 构建
  • 🔄 热重载开发 - 文件变化实时编译,开发体验丝滑流畅
  • ⚡ 增量编译 - 智能缓存管理,避免重复构建

🎨 完整的前端工程化

  • 🌈 TailwindCSS 集成 - 原生支持 TailwindCSS 编译和优化
  • 📱 组件化开发 - 支持 JavaScript 组件模块化开发和自动打包
  • 🏷️ 智能资源注入 - 自动生成资源标签,版本控制和缓存管理
  • 🛡️ 类型安全 - 支持现代 ESM 模块和 TypeScript

🚀 生产级优化

  • 📊 构建分析 - 详细的编译日志和性能分析
  • 🧹 自动清理 - 智能缓存清理和资源管理
  • ✅ 严格验证 - 部署前资源完整性检查
  • 🔍 错误诊断 - 完善的错误处理和问题诊断

🎯 解决什么问题?

传统 Hexo 主题开发痛点

  • ❌ 缺乏现代前端工程化工具支持
  • ❌ 手动管理 CSS 和 JavaScript 资源
  • ❌ 没有文件变化监听和热重载
  • ❌ 缺乏组件化开发能力
  • ❌ 部署时容易出现资源缺失问题

本插件提供的解决方案

  • 一站式前端工程化 - 集成 TailwindCSS、JavaScript 打包、热重载
  • 智能模式适配 - 根据不同使用场景自动调整构建策略
  • 零配置体验 - 安装即用,无需复杂配置
  • 生产级稳定性 - 完善的错误处理和资源验证机制

📦 快速开始

安装

# 使用 npm
npm install hexo-goose-builder --save

# 使用 yarn
yarn add hexo-goose-builder

基础使用

  1. 在主题模板中加载资源
<!-- 在 layout.ejs 的 <head> 标签中添加 -->
<%- load_theme_assets() %>
  1. 开发模式启动
hexo server

插件会自动:

  • 编译 TailwindCSS 样式
  • 打包 JavaScript 组件
  • 启动文件监听和热重载
  1. 生产构建
hexo generate
# 或
hexo deploy

插件会自动:

  • 进行完整的资源编译
  • 验证资源完整性
  • 清理过期缓存

🏗️ 架构设计

模块化架构

hexo-goose-builder/
├── index.js                    # 🎯 核心控制器
├── lib/
│   ├── mode-factory.js        # 🏭 模式工厂
│   ├── server-mode-handler.js # 🔧 开发模式处理器
│   ├── static-mode-handler.js # 📦 生产模式处理器
│   ├── tailwind-compiler.js   # 🎨 TailwindCSS 编译器
│   ├── js-bundler.js          # 📱 JavaScript 打包器
│   ├── banner.js              # 🎪 状态展示
│   ├── progress-logger.js     # 📊 进度日志
│   └── utils.js               # 🛠️ 工具函数
└── templates/                  # 📋 配置模板

智能模式系统

插件采用模式工厂模式,根据 Hexo 命令自动创建对应的处理器:

🔧 开发模式 (Server Mode)

hexo server  # 或 hexo s

特性矩阵:

  • 文件监听 - 实时监控源文件变化
  • 异步编译 - 不阻塞主服务进程
  • 热重载 - 自动刷新编译结果
  • 防抖优化 - 避免频繁重复编译
  • ❌ 强制验证(性能优先)

📦 生产模式 (Generate/Deploy Mode)

hexo generate  # 或 hexo g
hexo deploy    # 或 hexo d

特性矩阵:

  • 强制编译 - 确保所有资源最新
  • 严格验证 - 完整性和正确性检查
  • 缓存清理 - 移除过期文件
  • 错误阻断 - 发现问题立即停止
  • ❌ 文件监听(不需要)

🔄 工作流程

标准编译流程

graph TD
    A[Hexo 命令执行] --> B[模式检测]
    B --> C{模式类型}
    C -->|Server| D[ServerModeHandler]
    C -->|Generate/Deploy| E[StaticModeHandler]
    D --> F[启动文件监听]
    E --> G[清理缓存]
    F --> H[编译 TailwindCSS]
    G --> H
    H --> I[编译 JavaScript]
    I --> J[生成资源标签]
    J --> K[等待文件变化]
    J --> L[验证资源完整性]
    K --> H
    L --> M[完成构建]

资源处理链

  1. 🎨 样式处理

    TailwindCSS 源文件 → PostCSS 处理 → 压缩优化 → 版本哈希 → 输出文件
  2. 📱 脚本处理

    JS 组件源文件 → Rollup 打包 → Babel 转译 → 代码分割 → 版本哈希 → 输出文件
  3. 🏷️ 标签生成

    <!-- 自动生成的资源引用 -->
    <link rel="stylesheet" href="/css/components.styles.12345678.css">
    <script type="module" src="/js/components.AbCdEf123.bundle.js"></script>

⚙️ 配置选项

主配置 (_config.yml)

# Hexo 站点配置
theme_builder:
  debug: false          # 开启调试模式
  # JavaScript 配置  
  javascript:
    minify: true         # 启用代码压缩
    protected: true     # 启用防止用户浏览器调试
  # 文件监听配置
  watch:
    patterns:
      - "source/**/*.js"
      - "layout/**/*.ejs"
      - "source/**/*.css"
    ignored:
      - "**/node_modules/**"
      - "**/.*"
  

🎨 样式开发

TailwindCSS 集成

插件原生支持 TailwindCSS,提供完整的开发到生产流程,你可以通过Hexo根目录的tailwind.config.js 来配置自定义主题和样式。

组件样式

支持在模板中直接使用 TailwindCSS 样式类:

<!-- layout/post.ejs -->
<article class="max-w-4xl mx-auto bg-white rounded-lg shadow-lg p-6">
  <h1 class="text-3xl font-bold text-gray-900 mb-4">
    <%= post.title %>
  </h1>
  <div class="prose prose-lg text-gray-700">
    <%- post.content %>
  </div>
</article>

📱 脚本开发

组件化结构

// layout/components/gallery/gallery.js
export class Gallery {
  constructor(element) {
    this.element = element;
    this.init();
  }
  
  init() {
    // 组件初始化逻辑
    this.bindEvents();
  }
  
  bindEvents() {
    // 事件绑定
  }
}

// 自动注册组件
document.addEventListener('DOMContentLoaded', () => {
  document.querySelectorAll('.gallery').forEach(el => {
    new Gallery(el);
  });
});

🔍 调试与监控

调试模式

启用调试模式查看详细日志:

# _config.yml
theme_builder:
  debug: true

调试输出示例:

[Theme Builder] 检测到server模式,重置编译状态...
[Server Mode] 初始化server模式处理器...
[Server Mode] 启动文件监听器...
[Theme Builder] 开始编译主题资源(server模式)...
[Theme Builder] ✓ TailwindCSS编译完成(server模式)
[Theme Builder] ✓ JS组件打包完成(server模式)
[Server Mode] 文件监听器已就绪,等待文件变化...

性能监控

插件提供详细的性能指标:

[Theme Builder] 编译统计:
  - TailwindCSS: 245ms
  - JavaScript: 156ms  
  - 总耗时: 401ms
  - 输出文件: 3 个
  - 文件大小: 127KB

📊 最佳实践

🚀 性能优化

  1. 合理使用 TailwindCSS

    /* ✅ 推荐:使用实用类 */
    .btn { @apply px-4 py-2 bg-blue-500 text-white rounded; }
       
    /* ❌ 避免:过度自定义 */
    .btn { background: linear-gradient(45deg, #1e3a8a, #3b82f6); }
  2. 模块化组件开发

    // ✅ 推荐:按功能分离
    components/
    ├── navigation/
    │   ├── navigation.js
    │   └── navigation.css
    ├── gallery/
    │   ├── gallery.js
    │   └── gallery.css
    └── theme-toggle/
        ├── theme-toggle.js
        └── theme-toggle.css

🛡️ 集成到主题

主需要在你的Hexo现有主题的 html head 标签内引入下列助手代码,Goose Builder 会在生成页面时自动完成依赖注入:

<%- load_theme_assets() %>

🔧 故障排除

常见问题

Q: 样式没有生效?

A: 检查以下几点:

  1. 确认 TailwindCSS 编译成功
  2. 检查模板中是否正确调用 <%- load_theme_assets() %>
  3. 验证 CSS 文件是否正确生成到 source/css/ 目录

Q: JavaScript 组件无法加载?

A: 排查步骤:

  1. 打开浏览器控制台查看错误信息
  2. 确认 JS 文件路径正确
  3. 检查是否有语法错误阻止执行

Q: 开发模式下文件变化不触发重编译?

A: 可能原因:

  1. 文件不在监听路径内
  2. 权限问题阻止文件访问
  3. 防抖时间内的重复变化被忽略

Q: 部署后网站样式丢失?

A: 解决方案:

  1. 检查部署前是否看到编译成功日志
  2. 确认静态资源是否正确上传
  3. 检查 CDN 或服务器缓存设置

获取帮助

🤝 贡献指南

欢迎朋友们贡献代码和建议!

开发环境

将此插件安装为本地npm依赖,安装到你的本地 hexo 环境以供加载:

# 克隆项目
git clone https://github.com/Travisun/hexo-goose-builder.git
cd your-local-hexo-root
# 通过本地安装依赖
npm i {path_to_hexo-goose-builder}

# 运行测试(查看是否出现Builder欢迎信息)
hexo server

提交要求

  1. 代码风格: 遵循 ESLint 规则
  2. 测试: 确保现有测试通过
  3. 文档: 更新相关文档
  4. 提交信息: 使用语义化提交格式

📋 更新日志

v1.0.0 (最新)

  • ✨ 重构为模块化架构
  • 🚀 新增完整的 Deploy 模式支持
  • 🔄 优化文件监听和热重载机制
  • 🛡️ 增强错误处理和资源验证
  • 📊 改进日志输出和状态展示

未来规划

  • 🎯 支持更多前端框架集成 (Vue、React)
  • 📱 移动端优化和 PWA 支持
  • 🌐 国际化 (i18n) 支持
  • 🔌 插件生态系统

📄 许可证

MIT License © 2025 Travis Tang

⭐ 如果这个项目对你有帮助,请给一个 Star!

🏠 首页📚 文档🐛 问题💬 讨论