← Back to issue list

feat: expressjs framework

View original Github issue

Metadata

Project
rockcraft
Number
#784
Type
pull request
State
merged
Author
yanksyoon
Labels
—
Created
Updated
Closed

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.
72%
#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.
70%