feat: expressjs framework
Metadata
Current evaluation
Merged as adb30312, adding ExpressJS framework support for bare and Ubuntu 24.04, including runtime slices, Ubuntu Node/NPM defaults, and a tutorial.
Resolution: closed resolved
Reason: PR #784 was merged into main as commit adb30312, delivering the approved ExpressJS extension for bare and Ubuntu 24.04. Issues #785 and #790 directly informed design workarounds but did not supersede the change.
Evaluated by: mr-cal-bot
No scores available.
Issue body
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
-----
Adds support for [ExpressJS](https://expressjs.com/) framework.
### Key Decisions
- Support for `bare` and `24.04` only. Drop support for 22.04 (jammy)
- Jammy comes with an old version of Node which does not support `??` operator commonly used in JS projects. This means that the projects initialized with `express-generator` tooling (assumed to be the case) would not work.
- Include runtime slices in the `expressjs-framework/install-app > stage-packages` part.
- A separate `expressjs-framework/runtime` exists to cater to apt packages, since slices and apt packages cannot be used together by design. See https://github.com/canonical/rockcraft/issues/785.
- Do not include user customizable part for runtime slices/packages in the template
- There is an issue with the NPM plugin which conflicts with the `lib` directory of apt/slice installs. Remove the offering until the issue is resolved. See https://github.com/canonical/rockcraft/issues/790.
- Provide Ubuntu packaged Node/NPM by default, allow user to specify Node version if desired.
- To follow the principles of Ubuntu LTS, by default use the NodeJS and NPM provided by apt/slices but allow users to customize the behavior through overriding the NPM plugin's `npm-include-node` and `npm-node-version` fields.
- Include all paths under the `app/` directory.
- Users should not include/add paths which are not desired in the `app` path (e.g. .env files)
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged as adb30312, adding ExpressJS framework support for bare and Ubuntu 24.04, including runtime slices, Ubuntu Node/NPM defaults, and a tutorial. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged into main as adb30312, adding ExpressJS support for bare and Ubuntu 24.04, runtime slices/packages, Ubuntu Node/NPM defaults, and tutorial documentation. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged into main as commit adb30312, adding the expressjs-framework extension (runtime slices, Ubuntu Node/NPM defaults, Spread task) plus an Express tutorial; shipped in Rockcraft 1.10 release notes. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged into main as adb30312, adding ExpressJS framework support, runtime slices, Ubuntu Node/NPM defaults, and a tutorial for bare and Ubuntu 24.04. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged pull request adding ExpressJS framework support. Includes runtime slices, uses Ubuntu packaged Node/NPM by default, and drops 22.04 support. Documentation phrasing was clarified during review. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged. Adds ExpressJS framework support to Rockcraft for bare and 24.04 only. Defaults to Ubuntu Node/NPM, configures runtime slices, and includes all app paths. Documentation wording was clarified and a docs build path error was fixed. |
Update history
No update history recorded yet.
Related work
-
Related To:
canonical/rockcraft#785
(confidence 98%)
The declined stage-packages/stage-slices split led to runtime slices in install-app and a separate runtime part for apt packages.
-
Related To:
canonical/rockcraft#790
(confidence 98%)
The open NPM bundled-Node /lib collision led to omitting user-customizable runtime slice or package parts.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2244 Feat/expressjs extension | charmcraft | merged | ExpressJS framework support was merged via commit b50d41b9, adding the extension, init templates, documentation, and tests. | |
| #781 [WIP] feat: express JS | rockcraft | closed | ExpressJS WIP PR #781 was closed unmerged and superseded by #784, which added ExpressJS framework support and was merged into main as adb30312. |