etherpad-lite/bin/plugins
John McLear 7d537f3deb
Require Node.js >= 25 (engines, installers, Dockerfile, snap, CI, docs) (#7749)
* docs: bump documented Node.js minimum to 25

Etherpad is moving its supported Node.js floor to >= 25 (CI matrix is
already pinned to 25 across all workflows on the node25-corepack-pnpm11
work). Sync the user-facing documentation so the install instructions,
requirements section, and plugin metadata example all reflect the new
minimum instead of Node 22 / 12.17.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore: require Node.js >= 25 (engines, installers, Dockerfile, snap, CI)

#7747 added Node 25 *support* but left the floor at Node 22. This
commit completes the cutover so the runtime requirement matches the
documentation bumped in the previous commit.

- package.json: engines.node ">=22.13.0" → ">=25.0.0"
- bin/functions.sh, bin/installer.sh, bin/installer.ps1: REQUIRED_NODE
  bumped to 25 (controls the error message users see when they invoke
  the installer or pnpm scripts on an older Node)
- Dockerfile: base image node:22-alpine → node:25-alpine (×2). Corepack
  comment updated: Node 25 no longer ships corepack at all, so we
  install it from npm rather than refreshing a stale signing-key list
- snap/snapcraft.yaml: pinned NODE_VERSION 22.22.2 → 25.9.0 and the
  surrounding design notes rewritten to reflect Node 25 instead of 22
- .github/workflows/*.yml: matrix dropped from [22, 24, 25] to just
  [25] (anything older now fails engines anyway). Stale comments in
  build-and-deploy-docs.yml referencing vite 8's 22.12 floor cleaned up
- bin/plugins/lib/npmpublish.yml: setup-node 22 → 25 so the plugin
  template propagated to every ether/* plugin matches the new minimum

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(docker): install pnpm directly on Node 25 (no corepack)

node:25-alpine doesn't ship corepack but does pre-install yarn at
/usr/local/bin/yarn, so `npm install -g corepack@latest` fails with
EEXIST trying to register its yarn shim. Per #7747, end-users install
pnpm via plain `npm install -g pnpm` on Node 25 — use the same flow in
the Dockerfile (and remove the unused yarn binary so it doesn't sit on
PATH inside the image). Drops COREPACK_HOME and the related
issue-7687 cache-sharing tweak since there's no corepack shim to share.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 10:04:24 +01:00
..
lib Require Node.js >= 25 (engines, installers, Dockerfile, snap, CI, docs) (#7749) 2026-05-15 10:04:24 +01:00
checkPlugin.ts chore: Rename some occurences of etherpad-lite to etherpad (#7552) 2026-04-19 16:53:57 +02:00
getCorePlugins.sh Added updated workflow runners. 2024-03-16 20:38:05 +01:00
listOfficialPlugins cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
README.md cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
reTestAllPlugins.sh cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
stalePlugins.ts chore: removed axios (#7685) 2026-05-06 22:06:04 +02:00
updateAllPluginsScript.sh Added updated workflow runners. 2024-03-16 20:38:05 +01:00
updateCorePlugins.sh Added updated workflow runners. 2024-03-16 20:38:05 +01:00

The files in this folder are for Plugin developers.

Get suggestions to improve your Plugin

This code will check your plugin for known usual issues and some suggestions for improvements. No changes will be made to your project.

node src/bin/plugins/checkPlugin.js $PLUGIN_NAME$

Basic Example:

node src/bin/plugins/checkPlugin.js ep_webrtc

Autofixing - will autofix any issues it can

node src/bin/plugins/checkPlugin.js ep_whatever autofix

Autocommitting - fix issues and commit

node src/bin/plugins/checkPlugin.js ep_whatever autocommit

Autopush - fix issues, commit, push, and publish (highly dangerous)

node src/bin/plugins/checkPlugin.js ep_whatever autopush

All the plugins

Replace johnmclear with your github username

# Clones
cd node_modules
GHUSER=johnmclear; curl "https://api.github.com/users/$GHUSER/repos?per_page=1000" | grep -o 'git@[^"]*' | grep /ep_ | xargs -L1 git clone
cd ..

# autofixes and autocommits /pushes & npm publishes
for dir in node_modules/ep_*; do
  dir=${dir#node_modules/}
  [ "$dir" != ep_etherpad-lite ] || continue
  node src/bin/plugins/checkPlugin.js "$dir" autocommit
done

Automating update of ether organization plugins

getCorePlugins.sh
updateCorePlugins.sh