Packaging and CLI

CLI workflow

lessonkit init my-course
lessonkit dev
lessonkit build
lessonkit package --target scorm12

Requires Node 18+ for package LMS targets.

Flags and manifest schema: CLI reference.

Programmatic packaging

import { packageLessonkitCourse } from "@lessonkit/lxpack";
import { courseDescriptor } from "./course.descriptor";

const result = await packageLessonkitCourse({
  descriptor: courseDescriptor,
  outDir: ".lxpack/course",
  spaDistDir: "dist",
  target: "scorm12",
  output: ".lxpack/out/course-scorm12.zip",
});

if (!result.ok) {
  console.error(result.issues);
  process.exit(1);
}

Golden reference: examples/lxpack-golden in the repo.

Full guide: Packaging reference.

lessonkit.json vs interchange file

  • Project root lessonkit.jsonschemaVersion: 1, used by CLI

  • .lxpack/course/lessonkit.json — LXPack interchange output; not used for CLI discovery

Layout

Use single-spa for CLI packaging (1.0.0). Multi-lesson UX stays inside your React app.

per-lesson-spa is supported by @lessonkit/lxpack APIs but not lessonkit package yet.