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

tiddlywiki-cpl

v0.3.1

Published

CLI to search, install and batch-update plugins from the TiddlyWiki Community Plugin Library (CPL) for Node.js wikis, MultiWikiServer (MWS) and the MWS container image layout.

Readme

tiddlywiki-cpl

A command line tool to search, install and batch-update plugins from the TiddlyWiki Community Plugin Library (CPL) for:

  • Node.js folder wikis — the folder layout produced by the official tiddlywiki --savewikifolder command (tiddlywiki.info + tiddlers/ + plugins/ + themes/ + languages/).
  • MultiWikiServer (MWS) instances — the npm init @tiddlywiki/mws data folder (package.json + store/ + cache/).
  • The MWS container image layout from MultiWikiServer PR #137 — the /data layout where only /data/store is persisted.

Zero runtime dependencies. Requires Node.js 20 or newer.

Install

npm install -g tiddlywiki-cpl

This provides two equivalent commands: tw-cpl and tiddlywiki-cpl.

Quick start

Run the commands inside your wiki / MWS instance folder (or pass --root):

# find plugins
tw-cpl search codemirror

# show details
tw-cpl info Gk0Wk/CPL-Repo

# install one or more plugins
tw-cpl install linonetwo/tw-react Gk0Wk/CPL-Repo

# list what is installed here
tw-cpl list

# batch-update every installed plugin
tw-cpl update

# preview what would be updated, change nothing
tw-cpl update --check

A plugin reference can be a full title ($:/plugins/Gk0Wk/CPL-Repo), an author/name pair (Gk0Wk/CPL-Repo), or a unique name suffix (CPL-Repo).

How plugins are installed per target

The tool auto-detects the target from the current directory (override with --root <dir> and --target <type>):

| Target | Detected by | Plugin location | | ----------- | --------------------------------------------- | --------------- | | node-wiki | tiddlywiki.info exists | <wiki>/plugins/<name>/plugin.info (+ themes/, languages/ by plugin type) — the layout tiddlywiki --savewikifolder writes, auto-loaded by TiddlyWiki, no tiddlywiki.info change needed | | mws | package.json (@tiddlywiki/mws-instance) + store/ | <instance>/node_modules/tiddlywiki/plugins/<author>/<name>/ — the core plugin folders MWS rescans on startup | | mws-image | same as mws, inside the container data root | same as mws; the tool warns that only /data/store is persisted, so rebuild the image or mount the plugins directory as a volume |

For mws/mws-image, restart the server (mws listen) after installing — MWS builds its plugin cache from the tiddlywiki core folders at startup.

Plugins installed through the in-wiki plugin library UI (e.g. CPL inside the browser) are saved by TiddlyWiki's filesystem adaptor as loose plugin tiddler files inside <wiki>/tiddlers, in one of two canonical layouts (see core-server/filesystem.js and TiddlyWiki-CPL#166):

  • a single $__plugins_<author>_<name>.json holding a JSON array with the plugin tiddler and no .meta file (TiddlyWiki chooses this when a field name contains : or #, e.g. the Modern.TiddlyDev#SHA256-Hashed field);
  • $__plugins_<author>_<name>.json holding the raw plugin payload text plus a .json.meta sidecar with a tid-style field: value block.

tw-cpl update finds both layouts and rewrites them in place, keeping the original layout, key order, indentation and meta format. New .meta files are always written in TiddlyWiki's tid-style field block format.

Commands

tw-cpl search <query>        Search the CPL index
tw-cpl info <plugin>         Show details of one plugin
tw-cpl install <plugin...>   Install plugins into the current target
tw-cpl update [plugin...]    Batch-update installed plugins (no argument = all)
tw-cpl list                  List plugins installed in the current target
tw-cpl sources               Check reachability/latency of all known CPL sources
tw-cpl cache [--refresh]     Show or refresh the cached CPL index
tw-cpl help                  Show help

Options: --root <dir>, --target <node-wiki|mws|mws-image>, --source <name> (default netlify), --registry <url> (fully custom library, overrides --source), --refresh, --check (with update), --json. Set TW_CPL_SOURCE to change the default source permanently.

The CPL index is cached for one hour in %LOCALAPPDATA%\tiddlywiki-cpl on Windows or ~/.cache/tiddlywiki-cpl elsewhere (override with TW_CPL_CACHE).

Sources (mirrors)

The CPL repository builds its static library with GitHub Actions and publishes the same content to several places. Use tw-cpl sources to check which of them are reachable from your network and how fast they are, then switch with --source:

| Source | Where | Notes | | --------- | ------------------------------------------------- | ----- | | netlify | https://tw-cpl.netlify.app | official deployment (default) | | gh_pages| https://tiddly-gittly.github.io/TiddlyWiki-CPL | same build on GitHub Pages | | jsdelivr| https://cdn.jsdelivr.net/gh/tiddly-gittly/TiddlyWiki-CPL@cache | CDN mirror of the repo cache branch; usually the fastest choice inside China |

tw-cpl sources                          # probe all sources
tw-cpl --source jsdelivr search react   # use a specific source for one command
tw-cpl --registry https://my.example/cpl-library install foo/bar   # self-hosted library

--registry assumes the standard library/index.html + library/plugins/ layout; self-hosted mirrors of the cache branch layout are also supported via the library API (format: 'cache').

How it works

The CLI reads the static library published by TiddlyWiki-CPL (library/index.html → assetList), downloads the selected plugin payload (library/plugins/<name>.json — a plugin tiddler whose text field holds the inner tiddlers map) and decomposes it into a plugin folder: plugin.info plus one .tid/.json file per contained tiddler, exactly the format the Node.js TiddlyWiki and MWS loaders understand.

Development

npm test    # unit + integration tests (a local fixture mimics the CPL library)
npm run smoke  # live test against https://tw-cpl.netlify.app (read-only)

License

MIT