Skip to content

build: dependency updates & Node >=22.11 (pv-scripts, assemble-lite, pv-stylemark)#249

Merged
friewerts merged 8 commits into
developfrom
feature/pv-scripts-dependency-update
Jun 30, 2026
Merged

build: dependency updates & Node >=22.11 (pv-scripts, assemble-lite, pv-stylemark)#249
friewerts merged 8 commits into
developfrom
feature/pv-scripts-dependency-update

Conversation

@friewerts

Copy link
Copy Markdown
Member

Summary

Dependency updates across pv-scripts, assemble-lite and pv-stylemark, plus a Node engine bump to >=22.11 for the two CLIs. develop is merged into this branch so it integrates cleanly with the resolve-url-loader feature (#247) that landed there in the meantime.

Per package

pv-scriptsbuild(pv-scripts): update deps & bump Node to >=22.11

  • Node engine >=18.12.0>=22.11.0
  • Major bumps: typescript 5.7→6.0, sass-loader 16→17, cssnano 7→8, postcss-preset-env 10→11, copy-webpack-plugin 12→14, babel-loader 9→10, react-dev-utils 11→12, webpack-bundle-analyzer 4→5
  • Minor/patch: webpack 5.96→5.108, sass 1.75→1.101, @babel/* 7.26→7.29, postcss, css-loader, html-webpack-plugin, mini-css-extract-plugin, webpack-dev-server, …

assemble-litebuild(assemble-lite): update deps & adapt glob v9+ API

  • Dependency updates; helper/io-helper.js adapted to the glob v9+ API.

pv-stylemarkbuild(pv-stylemark): update deps & bump Node to >=22.11

  • Dependency updates + Node engine >=22.11.0
  • LSG UI stylesheets migrated from @import to @use.

Tooling

  • Two verification skills added (test-pv-scripts, test-assemble-lite). There is no unit-test suite, so these run a real consumer build to validate changes.
  • .nvmrc bumped; .github/workflows/lint.yml adjusted.

Verification

⚠️ Breaking changes / consumer notes

  • Node ≥ 22.11 is now required by pv-scripts and pv-stylemark.
  • resolve-url-loader (feat(pv-scripts): resolve paths to assets, relative to the scss file with the reference itself #247, already on develop): asset url() in SCSS is now resolved relative to the file that contains it, not the css entry. Consumers must migrate entry-relative paths (e.g. ../assets/…../../assets/…). Confirmed compatible with sass-loader 17 in the consumer build above.
  • sass 1.101 surfaces Dart Sass 3.0 deprecation warnings in consumer SCSS (e.g. global percentage()math.percentage()). Non-fatal, but consumers should clean these up.
  • Several major loader/plugin/typescript bumps — exercised by the consumer build above; consumers should re-run their own builds.

🤖 Generated with Claude Code

friewerts and others added 8 commits June 29, 2026 12:32
Update all third-party dependencies. Notable major upgrades: sass-loader 17,
postcss-preset-env 11, cssnano 8, copy-webpack-plugin 14, babel-loader 10,
webpack-bundle-analyzer 5, react-dev-utils 12, typescript 6. Babel stays on
7.29.x; chalk and slash stay on their CommonJS-compatible majors.

react-dev-utils 12 removed react-dev-utils/typescriptFormatter; tsTypeChecking.js
now uses fork-ts-checker's built-in "codeframe" formatter instead.

Several majors require Node >=22.11, so the engines floor, the root .nvmrc and
the CI lint matrix are raised to Node 22 (CI actions updated to current versions).

BREAKING CHANGE: minimum supported Node is now >=22.11.0 (was >=18.12.0).
Consumers running Node 18/20 must upgrade their Node runtime.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Skill to verify local pv-scripts changes against a consumer project via a real
build (direct-bin method). Always asks which project to test — nothing hardcoded.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update all third-party dependencies to their latest versions:
fs-extra 10 -> 11.3.5, glob 7 -> 13.0.6, handlebars 4.7.7 -> 4.7.9,
js-yaml 4 -> 5.2.0 (handlebars-helpers and yaml-front-matter were
already at their latest).

glob v9+ removed the callback API and its default export is no longer
callable, so helper/io-helper.js now uses the promise API
(const { glob } = require("glob") + await glob(...)). glob also stopped
sorting matches by default; asyncGlob now sorts explicitly to keep
partial/page/data registration order deterministic.

Note: js-yaml 5 defaults to the YAML 1.2 core schema, so timestamps in
data/*.yaml are parsed as strings instead of Date objects. Front-matter
is unaffected (it goes through yaml-front-matter's own bundled js-yaml).

Verified with a full LSG build of a real pv-stylemark consumer project.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Documents how to verify local assemble-lite changes by injecting the
local package (incl. its nested node_modules) into a pv-stylemark
consumer's node_modules, running `pv-stylemark prod`, then restoring.
Mirrors the existing test-pv-scripts skill.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Update all third-party dependencies. Notable major upgrades: marked 12 -> 18,
glob 10 -> 13, js-yaml 4 -> 5, vite 5 -> 8, typescript 5 -> 6. slash stays on
its CommonJS-compatible major (3.x).

marked 18 keeps the custom exampleParser extension API working — verified
functionally identical output (only cosmetic whitespace in <details> blocks).

marked 18 requires Node >=20, so the engines floor is raised to >=22.11.0 to
match pv-scripts and the monorepo standard.

BREAKING CHANGE: minimum supported Node is now >=22.11.0 (was >=18.0.0).

Verified with a full LSG build (349 components) of a real pv-stylemark consumer
project — identical output vs. the previously published version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sass deprecates @import (removal in Dart Sass 3.0). Switch the UI
stylesheets to the @use module system; each stylesheet now explicitly
@uses the variables/colors/typography/fonts it needs (as *, so no
member references change).

Extract the base/page rules (reset, .dds-page, .dds-page__main) out of
index.scss into page.scss so index.scss is a pure entry file and the
compiled CSS keeps its original rule order.

Compiled CSS is functionally identical: same rules, same order; only a
cosmetic selector-order swap within one @extend group remains.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Resolved pv-scripts package.json/package-lock.json conflicts: kept the
dependency-update versions and added develop's resolve-url-loader@5.0.0
(PR #247). compileCSS.js and pv-create-component/config.js auto-merged.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@friewerts friewerts merged commit ba893f3 into develop Jun 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant