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

cm-packer

v1.0.4

Published

Command-line tool for packing and unpacking IMSCC files (Common Cartridge 1.4)

Readme

cm-packer

A command-line tool for packing and unpacking IMSCC (IMS Common Cartridge) files used by Canvas LMS and other learning management systems. This tool follows the Common Cartridge 1.4 standard.

Features

  • Unpack IMSCC files: Extract and parse IMSCC files (ZIP format) into organized folders and files.
  • Pack directories: Convert folders and files back into valid IMSCC files.
  • Remap content: Reorganize unpacked IMSCC content into human-readable folder structures based on course organization.
  • Metadata parsing: Automatically parse and generate manifest metadata.
  • Web interface: Browser-based version available in /docs folder - no installation required!

Installation

Web Version (No Installation Required)

Try the browser-based version:

  1. Open docs/index.html in a web browser
  2. Drag and drop an IMSCC file (up to 100 MB)
  3. Download the remapped files

Or visit the hosted version at: [GitHub Pages URL if deployed]

From source

git clone https://github.com/videlais/cm-packer.git
cd cm-packer
npm install
npm run build

Using from NPM

npm i -g cm-packer

Usage

Unpack an IMSCC file

Extract an IMSCC file to a directory:

cm-packer unpack -i course.imscc -o ./output-folder

With verbose logging:

cm-packer unpack -i course.imscc -o ./output-folder -v

Pack a directory into an IMSCC file

Create an IMSCC file from a directory:

cm-packer pack -i ./input-folder -o course.imscc

With verbose logging:

cm-packer pack -i ./input-folder -o course.imscc -v

Remap IMSCC content to human-readable structure

Reorganize an unpacked IMSCC directory or directly from an IMSCC file into a folder structure with meaningful names based on the course organization in the manifest:

From an unpacked directory:

cm-packer remap -i ./unpacked-course -o ./remapped-course

Directly from an IMSCC file (automatically unpacks to a temporary directory):

cm-packer remap -f course.imscc -o ./remapped-course

With verbose logging:

cm-packer remap -f course.imscc -o ./remapped-course -v

The remap command will:

  • Parse the manifest organization structure.
  • Create folders matching module/week names from the course.
  • Rename files from IDs to human-readable titles.
  • Integrate wiki pages directly into the module structure.
  • Copy special directories (course_settings, web_resources, etc.).
  • Preserve the manifest and metadata files.

Command Reference

unpack

Unpack an IMSCC file into a directory.

Options:

  • -i, --input <file> - Input IMSCC file path (required)
  • -o, --output <directory> - Output directory path (required)
  • -v, --verbose - Enable verbose logging (optional)

pack

Pack a directory into an IMSCC file.

Options:

  • -i, --input <directory> - Input directory path (required)
  • -o, --output <file> - Output IMSCC file path (required)
  • -v, --verbose - Enable verbose logging (optional)

remap

Remap unpacked IMSCC directory to human-readable structure based on manifest organization.

Options:

  • -i, --input <directory> - Input directory path (unpacked IMSCC) (either this or --file required)
  • -f, --file <file> - Input IMSCC file path (will be unpacked automatically) (either this or --input required)
  • -o, --output <directory> - Output directory path for remapped structure (required)
  • -v, --verbose - Enable verbose logging (optional)

Note: You must specify either --input (for an already unpacked directory) OR --file (to unpack and remap in one step), but not both.

IMSCC File Structure

An IMSCC file is a ZIP archive that contains:

  • imsmanifest.xml - Main manifest file describing the cartridge contents.
  • Various content files (HTML, images, resources, etc.).
  • Organized in folders based on content type.

When unpacking, cm-packer will:

  1. Extract all files to the specified directory.
  2. Parse the manifest XML.
  3. Create a metadata.json file with summary information.

When packing, cm-packer will:

  1. Scan the directory for files.
  2. Create or use existing imsmanifest.xml.
  3. Package everything into a valid IMSCC ZIP file.

When remapping, cm-packer will:

  1. Parse the manifest to extract course organization and titles.
  2. Create a folder structure matching the course hierarchy (modules, weeks, etc.).
  3. Rename files from resource IDs to human-readable titles.
  4. Integrate wiki content HTML files into the appropriate modules.
  5. Copy special directories and preserve metadata.

Example Workflow

A typical workflow for working with IMSCC files:

# 1. Remap an IMSCC file to human-readable structure
cm-packer remap -f my-course.imscc -o ./course-content -v

# 2. Make edits to the human-readable files in ./course-content

# 3. Pack the modified directory back into an IMSCC file
cm-packer pack -i ./course-content -o my-course-updated.imscc -v

License

MIT

Common Cartridge Standard

This tool implements the IMS Common Cartridge 1.4 standard. For more information, visit: