Emulsify Core 4.x supports Node.js 24.11.0 or later. This is the project policy for maintained 4.x scripts, CI, and release automation.
Do not publish from a local checkout unless maintainers have explicitly approved the release. Use these steps to verify release readiness before publishing.
Run the repository checks from a clean checkout:
npm ci
npm run lint
npm test
npm run storybook-build
npm run fixtures:release
npm pack --dry-run --ignore-scripts --json
npm run smoke:packThe release fixture suite validates the 4.x checklist items that are easy to automate:
drupal-sdc-src-componentsbuilds Drupal SDC component sources and verifies mirrored rootcomponents/output while rejecting staledist/components/component files.- The default Vite fixture verifies
noneplatform output stays indist/and rejects Drupal globals such aswindow.Drupal,Drupal.behaviors, andattachBehaviorsin emitted JavaScript. wordpress-src-componentsverifies the WordPress adapter keeps global assets underdist/global, component output underdist/components, avoids rootcomponents/mirroring, and rejects Drupal globals in emitted JavaScript.mixed-storybookverifies Twig stories usingrenderTwig()and React stories build together in one Storybook instance.- Twig helper and tag support is covered by unit tests and fixtures for
bem(),add_attributes(),switch,case,default, andendswitch.
From the repository root, run the tarball smoke check to create the package tarball, install it in a clean temporary project, and verify public imports resolve from the packed package:
npm run smoke:packThe smoke check removes its temporary project and generated tarball after verifying the documented public package exports.
The publish workflow lives at .github/workflows/publish.yml and publishes from main. It grants id-token: write for npm trusted publishing, provides GITHUB_TOKEN so semantic-release can push tags and create GitHub releases, and provides NPM_TOKEN as the fallback token-based npm authentication path.
When configuring npm trusted publishing for @emulsify/core, use publish.yml as the GitHub Actions workflow filename.
Before publishing, verify release authentication from a main checkout with a dry run:
GITHUB_TOKEN="$GITHUB_TOKEN" NPM_TOKEN="$NPM_TOKEN" npx semantic-release --dry-runThe equivalent npm script form is:
npm run semantic-release -- --dry-runDo not run npm run semantic-release without --dry-run until maintainers are ready to publish the npm release.