Files

25 lines
886 B
Python

# hatch_build.py
import pathlib
import shutil
import subprocess
from hatchling.builders.hooks.plugin.interface import BuildHookInterface
class MarkdownBuildHook(BuildHookInterface):
def initialize(self, version, build_data):
# 1. Compile the UI exactly once per build
ui_dir = pathlib.Path(__file__).parent / "markdown_view_plugin" / "ui"
dist_dir = ui_dir / "dist"
# Clean any existing dist directory to ensure fresh build
if dist_dir.exists():
shutil.rmtree(dist_dir)
# Install dependencies and build the UI
subprocess.run(["pnpm", "install", "--frozen-lockfile"], cwd=ui_dir, check=True)
subprocess.run(["pnpm", "run", "build"], cwd=ui_dir, check=True)
# 2. Force-include the compiled assets in the wheel
build_data["force_include"][str(dist_dir)] = "markdown_view_plugin/ui/dist"