etherpad-lite/bin/plugins/lib
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
..
backend-tests.yml Enable globstar in plugin backend-tests template (#7414) 2026-03-31 22:01:29 +01:00
CONTRIBUTING.md chore: Rename some occurences of etherpad-lite to etherpad (#7552) 2026-04-19 16:53:57 +02:00
dependabot.yml cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
eslintrc.cjs cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
frontend-tests.yml Fix plugin frontend-tests template: use dev mode not prod (#7402) 2026-03-31 03:21:43 +01:00
gitignore cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
LICENSE cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
npmpublish.yml Require Node.js >= 25 (engines, installers, Dockerfile, snap, CI, docs) (#7749) 2026-05-15 10:04:24 +01:00
README.md cleanup after workspace refactoring (#6174) 2024-02-21 21:50:11 +01:00
test-and-release.yml feat: migrate npm publish to OIDC trusted publishing (#7401) (#7490) 2026-04-07 17:38:23 +01:00

[plugin_name]

TODO: Describe the plugin.

Example animated gif of usage if appropriate

screenshot

Installation

From the Etherpad working directory, run:

npm install --no-save --legacy-peer-deps [plugin_name]

Or, install from Etherpad's /admin/plugins page.

Configuration

TODO

Testing

To run the backend tests, run the following from the Etherpad working directory:

(cd src && pnpm test)

To run the frontend tests, visit: http://localhost:9001/tests/frontend/

Copyright © [yyyy] [name of copyright owner] and the [plugin_name] authors and contributors

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.