Skip to content

Update Node.js version support and postinstall script#233

Merged
yamcodes merged 11 commits intomainfrom
232-support-nodejs-v25
Oct 17, 2025
Merged

Update Node.js version support and postinstall script#233
yamcodes merged 11 commits intomainfrom
232-support-nodejs-v25

Conversation

@yamcodes
Copy link
Owner

@yamcodes yamcodes commented Oct 17, 2025

  • Updated the GitHub Actions workflow to include "latest" in the Node.js version matrix for testing, enhancing compatibility with newer features.
  • Modified the postinstall script in package.json to set NODE_OPTIONS for fumadocs-mdx, ensuring proper execution without web storage.

These changes aim to improve the testing environment and streamline the installation process.

Closes #232

Summary by CodeRabbit

  • New Features

    • Added official support for Node.js v25 (Current) alongside v22 (LTS).
    • Build/postinstall now handle Node 25+ and automatically disable Web Storage when required.
  • Documentation

    • Updated compatibility notes to list supported Node.js versions.
  • Chores

    • Expanded CI test matrix to include the latest Node.js releases.

- Updated the GitHub Actions workflow to include "latest" in the Node.js version matrix for testing, enhancing compatibility with newer features.
- Modified the postinstall script in package.json to set NODE_OPTIONS for fumadocs-mdx, ensuring proper execution without web storage.

These changes aim to improve the testing environment and streamline the installation process.
@yamcodes yamcodes linked an issue Oct 17, 2025 that may be closed by this pull request
@changeset-bot
Copy link

changeset-bot bot commented Oct 17, 2025

⚠️ No Changeset found

Latest commit: d5a2dd4

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@vercel
Copy link

vercel bot commented Oct 17, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
arkenv Ready Ready Preview Comment Oct 17, 2025 0:52am

@github-actions github-actions bot added the www Improvements or additions to arkenv.js.org label Oct 17, 2025
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 17, 2025

Caution

Review failed

The pull request is closed.

Walkthrough

Adds CI and docs support for Node.js v25 (latest) and updates the www app to use wrapper scripts that detect Node major version and conditionally add --no-webstorage to NODE_OPTIONS before running build or postinstall tooling; package.json scripts now delegate to these wrappers.

Changes

Cohort / File(s) Summary
CI Workflow Configuration
\.github/workflows/tests.yml
Expanded the Node.js matrix to include latest (v25) and removed TODO comments restricting Node 25 so tests/build run across the expanded matrix.
Wrapper scripts (www)
apps/www/bin/build.js, apps/www/bin/postinstall.js
Added Node.js wrapper scripts that read process.version and, for major >=25, ensure --no-webstorage is present in NODE_OPTIONS; they spawn the target tool (npx/args or pnpm exec fumadocs-mdx), forward stdio, and exit with the child's exit code, logging on startup errors.
Package script updates
apps/www/package.json
Switched build to node ./bin/build next build and postinstall to node ./bin/postinstall to invoke the new wrappers.
Documentation
packages/arkenv/README.md
Updated Requirements section to list Node.js v22 (LTS) and v25 (Current) with adjusted formatting/emphasis; Bun and Vite references unchanged.

Sequence Diagram(s)

sequenceDiagram
    participant Runner as npm / pnpm
    participant Wrapper as build.js / postinstall.js
    participant Runtime as Node.js
    participant Tool as next / fumadocs-mdx

    Runner->>Wrapper: invoke script + args
    Wrapper->>Runtime: read process.version
    alt major >= 25
        Note right of Wrapper #DFF2E1: modify NODE_OPTIONS\n(add --no-webstorage if missing)
        Wrapper->>Wrapper: inject flag into env
    else major < 25
        Note right of Wrapper #FFF3D9: leave NODE_OPTIONS unchanged
    end
    Wrapper->>Tool: spawn tool (forward stdio)
    Tool-->>Wrapper: output + exit code
    Wrapper-->>Runner: exit with tool's exit code
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Fix playground #189 — Modifies apps/www postinstall/build behavior and fumadocs-mdx usage; closely related to the new wrapper/postinstall flow.
  • Add e2e tests #230 — Previous changes to .github/workflows/tests.yml and Node matrix; directly related to CI Node version handling.
  • Move readme #132 — Documentation edits to packages/arkenv/README.md; overlaps with compatibility text updates.

Suggested labels

tests

Poem

🐰 I hopped a patch for build and post,
Checked Node's number, then I dosed the host,
If twenty-five arrives, I tuck webstorage away,
Spawn the tools, pass the logs, then bounce on my way,
Pip, hop, the site builds bright as day.

Pre-merge checks and finishing touches

✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title Check ✅ Passed The pull request title "Update Node.js version support and postinstall script" directly relates to the main changes in the PR. It references two key aspects of the changeset: Node.js version support (the expanded testing matrix and documentation updates for v25) and the postinstall script (the new wrapper script implementation). While the title could be more specific about Node.js v25, it is clear and specific enough that a teammate reviewing the commit history would understand the primary changes involve updating Node.js support and modifying installation scripts.
Out of Scope Changes Check ✅ Passed All changes in the PR are directly scoped to the objective of supporting Node.js v25 as defined in issue #232. The workflow updates enable testing with the latest Node.js version, the new wrapper scripts (build.js and postinstall.js) address the fumadocs-mdx post-install issue for v25+, the package.json modifications integrate these wrapper scripts, and the README documentation reflects the new supported versions. No unrelated refactoring, feature additions, or out-of-scope modifications are present.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f26fc77 and d5a2dd4.

📒 Files selected for processing (1)
  • apps/www/bin/postinstall.js (1 hunks)

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

- Revised the Node.js version support statement to include both v22 (LTS) and v25 (Current), ensuring clarity on compatibility with the latest Node.js releases.

This change enhances the documentation by providing accurate information regarding supported Node.js versions.
@github-actions github-actions bot added docs Improvements or additions to documentation arkenv Changes to the `arkenv` npm package. labels Oct 17, 2025
- Changed the postinstall script from setting NODE_OPTIONS to executing a shell script for fumadocs-mdx, improving compatibility and execution reliability during installation.

This update aims to streamline the installation process and ensure proper execution of the fumadocs-mdx tool.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 12d4864 and f888da0.

📒 Files selected for processing (3)
  • .github/workflows/tests.yml (2 hunks)
  • apps/www/package.json (1 hunks)
  • packages/arkenv/README.md (1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
**/README.md

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Document environment requirements in README files

Files:

  • packages/arkenv/README.md
🧠 Learnings (1)
📚 Learning: 2025-09-09T17:37:19.650Z
Learnt from: yamcodes
PR: yamcodes/arkenv#132
File: packages/arkenv/README.md:13-14
Timestamp: 2025-09-09T17:37:19.650Z
Learning: For yamcodes/arkenv project: Runtime support documentation should link to specific examples: Node.js (examples/basic), Bun (examples/with-bun), Vite (examples/with-vite-react-ts).

Applied to files:

  • packages/arkenv/README.md
🔇 Additional comments (3)
.github/workflows/tests.yml (2)

23-23: Appropriate matrix expansion for Node.js v25 testing.

Adding latest to the test matrix enables detection of incompatibilities with the current stable Node.js version. The test job will now run across Node.js 22 (LTS), lts/*, and latest. Combined with the postinstall workaround in apps/www/package.json, this should surface any integration issues early.


76-76: Consistent matrix expansion across build job.

The test-build job mirrors the test job's node-version matrix, ensuring builds are validated across the same Node.js versions. This is appropriate for a monorepo with multiple packages.

packages/arkenv/README.md (1)

113-113: Documentation accurately reflects updated Node.js version support.

The Requirements section now documents Node.js v22 (LTS) and v25 (Current), aligned with the expanded test matrix in the CI workflow. The hyperlinked examples for each runtime (Node.js, Bun, Vite) follow established documentation best practices and enhance discoverability for developers.

@pkg-pr-new
Copy link

pkg-pr-new bot commented Oct 17, 2025

Open in StackBlitz

npm i https://pkg.pr.new/arkenv@233
npm i https://pkg.pr.new/@arkenv/vite-plugin@233

commit: f26fc77

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/www/package.json (1)

9-9: Duplicate/related concern: postinstall references bash script without cross-platform support.

The postinstall script now delegates to ./bin/fumadocs-mdx.sh, which inherits the Windows compatibility issue flagged above. If you implement the Node.js wrapper suggested in the preceding comment, update this line to "postinstall": "node ./bin/fumadocs-mdx.js" for guaranteed cross-platform execution.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between f888da0 and 3ec0384.

📒 Files selected for processing (2)
  • apps/www/bin/fumadocs-mdx.sh (1 hunks)
  • apps/www/package.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test-e2e

yamcodes and others added 2 commits October 17, 2025 17:30
- Updated the postinstall script in package.json to execute a Node.js script instead of a shell script, enhancing compatibility.
- Introduced fumadocs-mdx.js to manage Node.js version-specific options for the fumadocs-mdx tool, ensuring proper execution across different Node.js versions.

These changes aim to streamline the installation process and improve the execution reliability of the fumadocs-mdx tool.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

🧹 Nitpick comments (1)
apps/www/bin/fumadocs-mdx.js (1)

6-8: Consider adding radix parameter to parseInt.

The version parsing logic is correct. For completeness, consider specifying the radix parameter: Number.parseInt(nodeVersion.slice(1).split(".")[0], 10) to ensure decimal parsing and avoid potential issues with leading zeros.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3ec0384 and 2e71acc.

📒 Files selected for processing (2)
  • apps/www/bin/fumadocs-mdx.js (1 hunks)
  • apps/www/package.json (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test-e2e
🔇 Additional comments (2)
apps/www/package.json (1)

9-9: Cross-platform postinstall approach looks good.

The change to use node ./bin/fumadocs-mdx.js effectively addresses the previous Windows compatibility concern. Node.js is cross-platform, so this will work consistently across Windows, macOS, and Linux without requiring additional dependencies like cross-env.

apps/www/bin/fumadocs-mdx.js (1)

1-4: LGTM: Shebang and imports are correct.

The shebang and Node.js built-in imports follow best practices.

- Introduced a new build.js script to manage Node.js version-specific options, ensuring proper execution of the build process across different Node.js versions.
- Updated the postinstall script to replace fumadocs-mdx.js with a more streamlined implementation, enhancing compatibility and reliability.
- Removed outdated fumadocs-mdx scripts to simplify the codebase.

These changes aim to improve the build process and streamline the installation workflow.
- Updated both build.js and postinstall.js to conditionally append the `--no-experimental-webstorage` flag to NODE_OPTIONS for Node.js versions 25 and above, ensuring compatibility without overwriting existing options.
- This change improves the handling of Node.js environment configurations, preventing potential conflicts with localStorage.

These modifications aim to streamline the execution of scripts across different Node.js versions.
- Enhanced the postinstall.js script to include a check for the presence of pnpm, ensuring it is available in the PATH before proceeding with the installation.
- This addition improves the reliability of the installation process by providing clear feedback if pnpm is not found, preventing potential runtime errors.

These changes aim to streamline the installation workflow and enhance user experience.
- Modified the exit code handling in both build.js and postinstall.js to ensure a default exit code of 1 is used when no code is provided. This change enhances error handling and provides clearer feedback during script execution.

These updates aim to improve the reliability of the build and installation processes.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (2)
apps/www/bin/postinstall.js (2)

26-33: Hard-coded pnpm is acceptable for this workspace.

While a past comment flagged the hard-coded pnpm as a potential issue, it's reasonable for a postinstall script in a pnpm workspace repository. The script runs during package installation when pnpm is definitionally available.


36-38: Apply the fix for null exit codes.

This issue was flagged in previous reviews but remains unresolved. When the child process is terminated by a signal, the exit code is null, which incorrectly results in exit code 0 (success) when passed to process.exit().

Apply the previously suggested fix:

 // Forward exit code
 child.on("exit", (code) => {
-	process.exit(code);
+	process.exit(code ?? 1);
 });
🧹 Nitpick comments (4)
apps/www/bin/build.js (1)

16-16: Consider more precise flag detection.

The includes() check could theoretically match if another flag contains this substring (e.g., a hypothetical --some-no-experimental-webstorage-other-flag). While unlikely in practice, a more robust approach would split by whitespace and check exact matches.

Consider this more precise check:

-	if (!existingOptions.includes(flag)) {
+	const flags = existingOptions.split(/\s+/).filter(Boolean);
+	if (!flags.includes(flag)) {
apps/www/bin/postinstall.js (3)

4-4: Remove unused import.

The path module is imported but never used in this script.

Apply this diff:

 const { spawn } = require("node:child_process");
-const path = require("node:path");

10-22: NODE_OPTIONS preservation looks good; consider more precise flag detection.

The code now properly preserves existing NODE_OPTIONS and only adds the flag when needed, addressing the past review concern about overwriting user configurations.

However, as with build.js, the includes() check at line 17 could theoretically produce false positives if another flag contains this substring.

For more precise matching:

 	// Only add the flag if it's not already present
-	if (!existingOptions.includes(flag)) {
+	const flags = existingOptions.split(/\s+/).filter(Boolean);
+	if (!flags.includes(flag)) {

1-43: Consider extracting shared logic to reduce duplication.

The NODE_OPTIONS handling logic (lines 6-23) is duplicated between this file and apps/www/bin/build.js. While the scripts are small and the duplication is manageable, extracting the version detection and NODE_OPTIONS setup to a shared utility function would improve maintainability.

Example shared utility at apps/www/bin/lib/node-options.js:

function setupNodeOptionsForNode25() {
	const nodeVersion = process.version;
	const majorVersion = Number.parseInt(nodeVersion.slice(1).split(".")[0]);
	
	if (majorVersion >= 25) {
		const existingOptions = process.env.NODE_OPTIONS || "";
		const flag = "--no-experimental-webstorage";
		
		if (!existingOptions.includes(flag)) {
			process.env.NODE_OPTIONS = existingOptions
				? `${existingOptions} ${flag}`
				: flag;
		}
	}
}

module.exports = { setupNodeOptionsForNode25 };

Then both scripts could use:

const { setupNodeOptionsForNode25 } = require("./lib/node-options");
setupNodeOptionsForNode25();
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2e71acc and 5754cb3.

📒 Files selected for processing (3)
  • apps/www/bin/build.js (1 hunks)
  • apps/www/bin/postinstall.js (1 hunks)
  • apps/www/package.json (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
apps/www/bin/postinstall.js (1)
apps/www/bin/build.js (6)
  • require (3-3)
  • nodeVersion (6-6)
  • majorVersion (7-7)
  • existingOptions (12-12)
  • flag (13-13)
  • child (28-31)
apps/www/bin/build.js (1)
apps/www/bin/postinstall.js (6)
  • require (3-3)
  • nodeVersion (7-7)
  • majorVersion (8-8)
  • existingOptions (13-13)
  • flag (14-14)
  • child (26-33)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
  • GitHub Check: test-e2e
  • GitHub Check: test-typesafety
  • GitHub Check: pkg-pr-new
🔇 Additional comments (7)
apps/www/bin/build.js (3)

1-7: LGTM! Version detection is correct.

The shebang, imports, and major version parsing logic are appropriate and consistent with the postinstall script.


24-31: LGTM! Command spawning is properly configured.

The argument forwarding and spawn configuration are correct. Using shell: false improves security and stdio: "inherit" properly forwards all I/O.


38-41: LGTM! Error handling is appropriate.

The error handler provides clear feedback and exits with a proper failure code.

apps/www/bin/postinstall.js (2)

6-8: LGTM! Version detection is consistent.

The version parsing logic matches the pattern used in build.js and is correct.


40-43: LGTM! Error handling is correct.

The error handler provides appropriate feedback and exits with a failure code.

apps/www/package.json (2)

6-6: LGTM! Build script correctly delegates to wrapper.

The updated build script properly invokes the Node.js wrapper, which handles NODE_OPTIONS configuration and forwards the next build command to npx.


9-9: LGTM! Postinstall script eliminates cross-platform issues.

Using the Node.js wrapper script eliminates the cross-platform shell syntax issues mentioned in previous reviews. The approach is cleaner and more maintainable than using cross-env.

- Changed the flag from `--no-experimental-webstorage` to `--no-webstorage` in both build.js and postinstall.js for Node.js versions 25 and above. This update ensures compatibility and prevents localStorage conflicts without overwriting existing NODE_OPTIONS.

These modifications aim to enhance the execution of scripts across different Node.js versions.
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
apps/www/bin/build.js (1)

13-13: Verify the correct Node.js flag for disabling Web Storage.

Same concern as in postinstall.js: the flag is --no-webstorage, but ensure this is correct for Node.js 25+. Past review comments referenced --no-experimental-webstorage.

🧹 Nitpick comments (2)
apps/www/bin/postinstall.js (1)

4-4: Remove unused import.

The path module is imported but never used in this file.

Apply this diff:

-const path = require("node:path");
apps/www/bin/build.js (1)

6-21: Consider extracting shared logic to reduce duplication.

The Node.js version detection and NODE_OPTIONS handling logic is duplicated between build.js and postinstall.js. Consider extracting this into a shared utility module to improve maintainability.

For example, create apps/www/bin/utils/node-env.js:

function setupNodeEnv() {
	const nodeVersion = process.version;
	const majorVersion = Number.parseInt(nodeVersion.slice(1).split(".")[0]);

	if (majorVersion >= 25) {
		const existingOptions = process.env.NODE_OPTIONS || "";
		const flag = "--no-webstorage";

		if (!existingOptions.includes(flag)) {
			process.env.NODE_OPTIONS = existingOptions
				? `${existingOptions} ${flag}`
				: flag;
		}
	}
}

module.exports = { setupNodeEnv };

Then import and call it in both scripts:

const { setupNodeEnv } = require("./utils/node-env.js");
setupNodeEnv();
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5754cb3 and f26fc77.

📒 Files selected for processing (2)
  • apps/www/bin/build.js (1 hunks)
  • apps/www/bin/postinstall.js (1 hunks)
🧰 Additional context used
🧬 Code graph analysis (2)
apps/www/bin/postinstall.js (1)
apps/www/bin/build.js (6)
  • require (3-3)
  • nodeVersion (6-6)
  • majorVersion (7-7)
  • existingOptions (12-12)
  • flag (13-13)
  • child (28-31)
apps/www/bin/build.js (1)
apps/www/bin/postinstall.js (6)
  • require (3-3)
  • nodeVersion (7-7)
  • majorVersion (8-8)
  • existingOptions (13-13)
  • flag (14-14)
  • child (34-41)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: test-e2e
  • GitHub Check: test-typesafety
🔇 Additional comments (4)
apps/www/bin/postinstall.js (2)

25-41: LGTM!

The pnpm verification and process spawning logic are correctly implemented. The pnpm availability check addresses the previous concern about hard-coding the package manager, and the spawn configuration properly forwards arguments and stdio.


43-51: LGTM!

The exit code forwarding with code ?? 1 correctly handles signal terminations, and the error handler provides clear feedback. This properly addresses the previous concern about null exit codes.

apps/www/bin/build.js (2)

24-31: LGTM!

The argument extraction and process spawning logic are correct. Using npx here is appropriate for the build command, and the spawn configuration properly forwards arguments and stdio.


33-41: LGTM!

The exit code forwarding with code ?? 1 correctly handles signal terminations, and the error handler provides clear feedback. This implementation is consistent with postinstall.js and properly addresses the previous concern.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5754cb3 and f26fc77.

📒 Files selected for processing (2)
  • apps/www/bin/build.js (1 hunks)
  • apps/www/bin/postinstall.js (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • apps/www/bin/build.js
🧰 Additional context used
🧬 Code graph analysis (1)
apps/www/bin/postinstall.js (1)
apps/www/bin/build.js (6)
  • require (3-3)
  • nodeVersion (6-6)
  • majorVersion (7-7)
  • existingOptions (12-12)
  • flag (13-13)
  • child (28-31)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: test-e2e
🔇 Additional comments (5)
apps/www/bin/postinstall.js (5)

6-8: LGTM!

Version detection logic is correct and consistent with the pattern used in apps/www/bin/build.js.


13-21: LGTM! NODE_OPTIONS preservation is handled correctly.

The logic properly preserves existing NODE_OPTIONS, prevents duplicate flags, and only modifies the environment when necessary. This correctly addresses the concern raised in previous reviews.


25-31: LGTM! pnpm availability check is well-implemented.

The verification correctly addresses the concern from previous reviews by failing fast with a clear error message if pnpm is not available, rather than producing a cryptic spawn error later.


33-41: LGTM! Process spawning is implemented correctly.

The spawn configuration properly:

  • Delegates to pnpm exec fumadocs-mdx
  • Forwards CLI arguments via process.argv.slice(2)
  • Uses stdio: "inherit" to make output visible
  • Uses shell: false for security

43-51: LGTM! Exit and error handling are correct.

The exit handler properly addresses the concern from previous reviews by using code ?? 1 to default to exit code 1 when the child process is terminated by a signal (null). The error handler also provides a clear message and appropriate exit code.

- Eliminated the unused `path` import from the postinstall.js script to clean up the code and improve readability. This change contributes to a more efficient script without affecting functionality.
@yamcodes yamcodes merged commit 830d289 into main Oct 17, 2025
16 of 18 checks passed
@yamcodes yamcodes deleted the 232-support-nodejs-v25 branch October 17, 2025 12:51
@yamcodes yamcodes mentioned this pull request Oct 17, 2025
@coderabbitai coderabbitai bot mentioned this pull request Oct 31, 2025
@coderabbitai coderabbitai bot mentioned this pull request Nov 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arkenv Changes to the `arkenv` npm package. docs Improvements or additions to documentation www Improvements or additions to arkenv.js.org

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Support Node.js v25

1 participant