Skip to content

Conversation

JounQin
Copy link
Member

@JounQin JounQin commented Jun 11, 2025

close #78


Important

Enhance error messages with correct npm install commands by detecting npm clients and updating no-extraneous-dependencies.ts.

  • Behavior:
    • Error messages for missing dependencies in no-extraneous-dependencies.ts now use getNpmInstallCommand() to generate the correct install command based on the detected npm client.
  • Utilities:
    • Added getNpmClient() and getNpmInstallCommand() in npm-client.ts to detect npm clients (npm, yarn, pnpm, bun, deno) and generate install commands.
  • Types:
    • Introduced SetValue type in types.ts for extracting value types from a Set.
  • Tests:
    • Added npm-client.spec.ts to test getNpmClient() and getNpmInstallCommand() for different npm clients.

This description was created by Ellipsis for f57d8a0. You can customize this summary. It will automatically update as commits are pushed.


Summary by CodeRabbit

  • New Features
    • Error messages for missing dependencies now display the appropriate install command based on your package manager.
  • Improvements
    • Added support for detecting various npm clients (npm, yarn, pnpm, bun, deno) and generating install commands accordingly.
  • Documentation
    • Added a changeset describing the update.
  • Type Enhancements
    • Introduced a new utility type for extracting the value type from a Set.

@JounQin JounQin requested a review from Copilot June 11, 2025 21:19
@JounQin JounQin self-assigned this Jun 11, 2025
@JounQin JounQin added the bug Something isn't working label Jun 11, 2025
Copy link

changeset-bot bot commented Jun 11, 2025

🦋 Changeset detected

Latest commit: f57d8a0

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
eslint-plugin-import-x Patch

Not sure what this means? Click here to learn what changesets are.

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

Copy link

coderabbitai bot commented Jun 11, 2025

Walkthrough

A new utility for detecting the npm client and generating an appropriate install command was introduced. The rule for reporting extraneous dependencies now uses this utility to provide more accurate, client-specific install instructions. Supporting types and exports were added, and a changeset documents the update.

Changes

File(s) Change Summary
.changeset/ready-rules-attack.md Added a changeset documenting the patch update for dynamic npm client detection and messaging.
src/rules/no-extraneous-dependencies.ts Updated to use the new utility for generating install commands in error messages.
src/types.ts Added a new generic type alias SetValue for extracting the type of values in a Set.
src/utils/index.ts Re-exported all exports from the new npm-client.js utility module.
src/utils/npm-client.ts Introduced utility functions/constants for npm client detection and install command generation.
test/utils/npm-client.spec.ts Added unit tests for npm client detection and install command generation utilities.

Sequence Diagram(s)

sequenceDiagram
    participant Rule as no-extraneous-dependencies Rule
    participant Utils as npm-client Utility

    Rule->>Utils: getNpmInstallCommand(packageName)
    Utils->>Utils: getNpmClient()
    Utils-->>Rule: install command string (e.g., "yarn add packageName")
    Rule-->>Developer: Error message with correct install command
Loading

Assessment against linked issues

Objective Addressed Explanation
Remove npm-specific messaging from error messages or allow for client-specific instructions (#78)

Assessment against linked issues: Out-of-scope changes

No out-of-scope changes detected.

Suggested labels

enhancement, internal

Poem

A bunny hopped with code delight,
Swapped out npm—now all is right!
Detects your tool with gentle care,
"yarn," "pnpm," or "bun"—it's fair.
No more confusion, just install with glee,
Thanks to this patch, it's dependency-free! 🐇✨

Warning

There were issues while running some tools. Please review the errors and either fix the tool's configuration or disable the tool if it's a critical failure.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

src/rules/no-extraneous-dependencies.ts

Oops! Something went wrong! :(

ESLint: 9.28.0

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/index.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:201:49)

src/types.ts

Oops! Something went wrong! :(

ESLint: 9.28.0

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/index.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:201:49)

src/utils/npm-client.ts

Oops! Something went wrong! :(

ESLint: 9.28.0

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/lib/index.js' imported from /eslint.config.js
at finalizeResolution (node:internal/modules/esm/resolve:274:11)
at moduleResolve (node:internal/modules/esm/resolve:859:10)
at defaultResolve (node:internal/modules/esm/resolve:983:11)
at ModuleLoader.defaultResolve (node:internal/modules/esm/loader:801:12)
at #cachedDefaultResolve (node:internal/modules/esm/loader:725:25)
at ModuleLoader.resolve (node:internal/modules/esm/loader:708:38)
at ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:309:38)
at #link (node:internal/modules/esm/module_job:201:49)

  • 2 others
✨ Finishing Touches
  • 📝 Generate Docstrings

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
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR fixes how the npm client and install command are determined, ensuring that the proper command is suggested in error messages.

  • Introduces a new npm-client module with getNpmClient and getNpmInstallCommand functions
  • Updates exports and integration in the rules to utilize the new npm-client utility
  • Adds a new SetValue type to support inferred values for npm clients

Reviewed Changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/utils/npm-client.ts Adds functions to determine the npm client and form the install command
src/utils/index.ts Re-exports the npm-client module
src/types.ts Adds a SetValue helper type
src/rules/no-extraneous-dependencies.ts Integrates the dynamic install command in an error message
.changeset/ready-rules-attack.md Updates changeset to reflect the fix

Copy link

codesandbox-ci bot commented Jun 11, 2025

This pull request is automatically built and testable in CodeSandbox.

To see build info of the built libraries, click here or the icon next to each commit SHA.

Copy link

pkg-pr-new bot commented Jun 11, 2025

Open in StackBlitz

npm i https://pkg.pr.new/eslint-plugin-import-x@383

commit: f57d8a0

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Caution

Changes requested ❌

Reviewed everything up to 0dadf6f in 1 minute and 58 seconds. Click for details.
  • Reviewed 90 lines of code in 5 files
  • Skipped 0 files when reviewing.
  • Skipped posting 0 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.

Workflow ID: wflow_hgMdUWLikYofJRIz

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
-0.50% (target: -1.00%) 88.89%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (d536756) 3684 3521 95.58%
Head commit (0dadf6f) 3693 (+9) 3511 (-10) 95.07% (-0.50%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#383) 9 8 88.89%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Copy link

codacy-production bot commented Jun 11, 2025

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
+0.01% (target: -1.00%) 100.00%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (d536756) 3684 3521 95.58%
Head commit (f57d8a0) 3694 (+10) 3531 (+10) 95.59% (+0.01%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#383) 10 10 100.00%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

Copy link

codecov bot commented Jun 11, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 96.03%. Comparing base (d536756) to head (f57d8a0).
Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #383   +/-   ##
=======================================
  Coverage   96.02%   96.03%           
=======================================
  Files          94       95    +1     
  Lines        4907     4917   +10     
  Branches     1842     1826   -16     
=======================================
+ Hits         4712     4722   +10     
  Misses        194      194           
  Partials        1        1           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@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.

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 1

🔭 Outside diff range comments (2)
src/utils/npm-client.ts (1)

27-29: ⚠️ Potential issue

getNpmInstallCommand relies on a global that is (still) undefined

Because the cache is never populated, the ternaries always take the non-npm / non-deno branches, emitting add and omitting the npm: prefix. Capture the client locally instead of peeking at the mutable global:

-export const getNpmInstallCommand = (packageName: string) =>
-  `${getNpmClient()} ${npmClient === NPM ? 'i' : 'add'} ${npmClient === 'deno' ? `${NPM}:` : ''}${packageName}`
+export const getNpmInstallCommand = (packageName: string) => {
+  const client = getNpmClient()
+  const verb = client === NPM ? 'i' : 'add'
+  const prefix = client === 'deno' ? `${NPM}:` : ''
+  return `${client} ${verb} ${prefix}${packageName}`
+}
src/rules/no-extraneous-dependencies.ts (1)

393-402: 🛠️ Refactor suggestion

Install command is frozen at module load & duplicated work is done for each import

Evaluating getNpmInstallCommand('{{packageName}}') inside the message literal:

  1. Computes the client only once, so eslint --fix under a different client produces stale advice.
  2. Bakes the literal '{{packageName}}' into the command, resulting in npm add {{packageName}} even for npm (see bug above).

Delegate the formatting to runtime via an extra placeholder:

-      missing: `'{{packageName}}' should be listed in the project's dependencies. Run '${getNpmInstallCommand('{{packageName}}')}' to add it`,
+      missing: `'{{packageName}}' should be listed in the project's dependencies. Run '{{installCommand}}' to add it`,

and when reporting:

   context.report({
     node,
     messageId: 'missing',
     data: {
       packageName,
+      installCommand: getNpmInstallCommand(packageName),
     },
   })

This keeps advice accurate for every package and every execution context.

🧹 Nitpick comments (1)
.changeset/ready-rules-attack.md (1)

1-6: Nit: give the changeset a human-readable summary line

Conventional-changelog tools surface only the first line; consider:

fix: detect npm client correctly and show proper install command
🛑 Comments failed to post (1)
src/utils/npm-client.ts (1)

17-25: ⚠️ Potential issue

getNpmClient never populates the cache – every call re-parses the env var

npmClient is left undefined, so subsequent calls pay the parsing cost again and the rest of the module (e.g. getNpmInstallCommand) receives undefined instead of the detected client.

-export const getNpmClient = (): NpmClient => {
-  if (npmClient) {
-    return npmClient
-  }
-
-  const client = process.env.npm_config_user_agent?.split('/')[0]
-
-  return client && NPM_CLIENTS.has(client) ? (client as NpmClient) : NPM
-}
+export const getNpmClient = (): NpmClient => {
+  if (npmClient) return npmClient
+
+  const detected =
+    process.env.npm_config_user_agent?.split('/')[0] as NpmClient | undefined
+
+  npmClient =
+    detected && NPM_CLIENTS.has(detected) ? detected : (NPM as NpmClient)
+
+  return npmClient
+}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

export const getNpmClient = (): NpmClient => {
  if (npmClient) return npmClient

  const detected =
    process.env.npm_config_user_agent?.split('/')[0] as NpmClient | undefined

  npmClient =
    detected && NPM_CLIENTS.has(detected) ? detected : (NPM as NpmClient)

  return npmClient
}
🤖 Prompt for AI Agents
In src/utils/npm-client.ts around lines 17 to 25, the function getNpmClient does
not assign the detected client to the npmClient cache variable, causing repeated
parsing of the environment variable and returning undefined to other parts of
the module. Fix this by assigning the resolved client value to npmClient before
returning it, ensuring the cache is populated and subsequent calls return the
cached client without re-parsing.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed 4276e6f in 1 minute and 25 seconds. Click for details.
  • Reviewed 92 lines of code in 5 files
  • Skipped 0 files when reviewing.
  • Skipped posting 4 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. src/rules/no-extraneous-dependencies.ts:397
  • Draft comment:
    Using getNpmInstallCommand to dynamically generate the install command is neat. Consider caching the result of getNpmClient() into a local variable inside getNpmInstallCommand (or here) to ensure consistency rather than relying on the global 'npmClient' later in the template.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
2. src/types.ts:160
  • Draft comment:
    The new SetValue utility type is clear and follows common TypeScript patterns. Good addition for extracting the value type of a Set.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. src/utils/npm-client.ts:29
  • Draft comment:
    In getNpmInstallCommand, the function calls getNpmClient() and then uses the global 'npmClient' in subsequent checks. For clarity and to avoid any future pitfalls, consider storing the result of getNpmClient() in a local variable and using that consistently (e.g., const client = getNpmClient(); then use client in place of global npmClient).
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
4. src/utils/npm-client.ts:22
  • Draft comment:
    The parsing of process.env.npm_config_user_agent is straightforward. It might be helpful to add a brief comment describing the expected format of this environment variable for future maintainers.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None

Workflow ID: wflow_YbeN3J9U6BA0QHu6

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

@ellipsis-dev ellipsis-dev bot left a comment

Choose a reason for hiding this comment

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

Important

Looks good to me! 👍

Reviewed f57d8a0 in 48 seconds. Click for details.
  • Reviewed 45 lines of code in 1 files
  • Skipped 0 files when reviewing.
  • Skipped posting 1 draft comments. View those below.
  • Modify your settings and rules to customize what types of comments Ellipsis leaves. And don't forget to react with 👍 or 👎 to teach Ellipsis.
1. test/utils/npm-client.spec.ts:17
  • Draft comment:
    Consider adding tests for additional package managers (e.g., pnpm, bun) to ensure full coverage as mentioned in the changelog.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None

Workflow ID: wflow_iyT1eZaLa6O5ybRK

You can customize Ellipsis by changing your verbosity settings, reacting with 👍 or 👎, replying to comments, or adding code review rules.

Copy link

@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

🧹 Nitpick comments (2)
test/utils/npm-client.spec.ts (2)

10-10: Prefer assignment over delete for env vars

The linter (Biome noDelete) is right here: deleting a property from process.env is slower than re-assigning.
In this case a simple process.env.npm_config_user_agent = undefined suffices and keeps the key available while signalling “no value”.

🧰 Tools
🪛 Biome (1.9.4)

[error] 10-10: Avoid the delete operator which can impact performance.

Unsafe fix: Use an undefined assignment instead.

(lint/performance/noDelete)


22-26: Consider adding coverage for all supported clients (pnpm, bun, etc.)

npm-client.ts recognises more than npm, yarn, and deno.
Adding assertions for pnpm, bun, and an uppercase variant (e.g. YARN/4.0.0) would harden regression protection with minimal cost.

Also applies to: 34-38

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0dadf6f and f57d8a0.

📒 Files selected for processing (6)
  • .changeset/ready-rules-attack.md (1 hunks)
  • src/rules/no-extraneous-dependencies.ts (2 hunks)
  • src/types.ts (1 hunks)
  • src/utils/index.ts (1 hunks)
  • src/utils/npm-client.ts (1 hunks)
  • test/utils/npm-client.spec.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (5)
  • .changeset/ready-rules-attack.md
  • src/rules/no-extraneous-dependencies.ts
  • src/types.ts
  • src/utils/index.ts
  • src/utils/npm-client.ts
🧰 Additional context used
🧬 Code Graph Analysis (1)
test/utils/npm-client.spec.ts (1)
src/utils/npm-client.ts (3)
  • getNpmClient (17-27)
  • NpmClient (13-13)
  • getNpmInstallCommand (29-30)
🪛 Biome (1.9.4)
test/utils/npm-client.spec.ts

[error] 10-10: Avoid the delete operator which can impact performance.

Unsafe fix: Use an undefined assignment instead.

(lint/performance/noDelete)

⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js lts/* and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js lts/* and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 24 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 24 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on macos-latest

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[feature] Allow for custom messaging or remove NPM specific messaging

1 participant