Skip to content

docs: add why section on the top to clarify #323

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
May 16, 2025
Merged

docs: add why section on the top to clarify #323

merged 6 commits into from
May 16, 2025

Conversation

JounQin
Copy link
Member

@JounQin JounQin commented May 14, 2025

close #196

cc @43081j, @adrian-gierakowski , @benmccann and @JoshuaKGoldberg

I'm not a native English speaker, so maybe you can help to improve the sentences. ❤️

also cc @SukkaW


Important

Added a "Why" section to the README and updated a development dependency for improved tooling.

  • Documentation:
    • Added a new "Why" section to README.md explaining the rationale for forking and key differences from the original plugin.
    • Updated Table of Contents in README.md to include new sections.
  • Chores:
    • Replaced @1stg/lint-staged with @1stg/nano-staged in package.json and .nano-staged.js for improved tooling.

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


Summary by CodeRabbit

  • Documentation

    • Added a new "Why" section to the README with details on the rationale for forking and key differences from the original plugin.
    • Added a "Differences" section outlining technical distinctions and improvements over the original plugin.
    • Updated the Table of Contents and clarified several sections in the README.
  • Chores

    • Replaced a development dependency with an updated alternative for improved tooling.
    • Updated export configuration to align with the new development dependency.

@JounQin JounQin self-assigned this May 14, 2025
@JounQin JounQin added the documentation Improvements or additions to documentation label May 14, 2025
Copy link

changeset-bot bot commented May 14, 2025

⚠️ No Changeset found

Latest commit: f74abd6

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

Copy link

codacy-production bot commented May 14, 2025

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
+0.00% (target: -1.00%)
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (8b2d6d3) 3574 3416 95.58%
Head commit (32a6b98) 3574 (+0) 3416 (+0) 95.58% (+0.00%)

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 (#323) 0 0 ∅ (not applicable)

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

coderabbitai bot commented May 14, 2025

Walkthrough

The changes update the staged linting tool from @1stg/lint-staged to @1stg/nano-staged in both configuration and dependencies. The README is expanded with a new "Why" section, explaining the rationale for forking from eslint-plugin-import, and detailing differences and improvements.

Changes

File(s) Change Summary
.nano-staged.js Changed the default export to use @1stg/nano-staged/tsc instead of @1stg/lint-staged/tsc.
package.json Replaced @1stg/lint-staged with @1stg/nano-staged in devDependencies.
README.md Added a "Why" section detailing the fork rationale and differences from eslint-plugin-import; updated TOC, intro, and references.

Assessment against linked issues

Objective Addressed Explanation
Add a "Why" or "Different with eslint-plugin-import" section in the README (#196)

Poem

A nano hop from lint to staged,
With README tales now well engaged.
Why the fork? The reasons told—
Dependencies trimmed, improvements bold.
Now code and docs both shine anew,
🐇 Cheers to progress, swift and true!

Note

⚡️ AI Code Reviews for VS Code, Cursor, Windsurf

CodeRabbit now has a plugin for VS Code, Cursor and Windsurf. This brings AI code reviews directly in the code editor. Each commit is reviewed immediately, finding bugs before the PR is raised. Seamless context handoff to your AI code agent ensures that you can easily incorporate review feedback.
Learn more here.


Note

⚡️ Faster reviews with caching

CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.
Enjoy the performance boost—your workflow just got faster.


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

codesandbox-ci bot commented May 14, 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

Walkthrough

This pull request introduces a new Why section at the top of the README to clarify the reasons behind forking eslint-plugin-import and the differences between the two plugins. Additionally, it updates dependencies from @1stg/lint-staged to @1stg/nano-staged in various configuration files.

Changes

Files Summary
.nano-staged.js, package.json, yarn.lock Updated dependency from @1stg/lint-staged to @1stg/nano-staged.
README.md Added a new Why section explaining the rationale behind the fork and differences from eslint-plugin-import.

Copy link

codecov bot commented May 14, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 96.02%. Comparing base (8b2d6d3) to head (f74abd6).
Report is 1 commits behind head on master.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #323   +/-   ##
=======================================
  Coverage   96.02%   96.02%           
=======================================
  Files          92       92           
  Lines        4758     4758           
  Branches     1768     1789   +21     
=======================================
  Hits         4569     4569           
  Misses        188      188           
  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

socket-security bot commented May 14, 2025

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Added@​1stg/​nano-staged@​0.1.1711007287100
Updated@​1stg/​prettier-config@​5.1.4 ⏵ 5.2.092 -110075 +194100

View full report

Copy link

codacy-production bot commented May 14, 2025

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
+0.00% (target: -1.00%)
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (8b2d6d3) 3574 3416 95.58%
Head commit (f74abd6) 3574 (+0) 3416 (+0) 95.58% (+0.00%)

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 (#323) 0 0 ∅ (not applicable)

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

pkg-pr-new bot commented May 14, 2025

Open in StackBlitz

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

commit: f74abd6

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 everything up to 32a6b98 in 2 minutes and 9 seconds. Click for details.
  • Reviewed 92 lines of code in 3 files
  • Skipped 1 files when reviewing.
  • Skipped posting 6 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. .nano-staged.js:1
  • Draft comment:
    Correctly updated export from '@1stg/lint-staged/tsc' to '@1stg/nano-staged/tsc'. Ensure all tooling and docs refer to the new package.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. README.md:56
  • Draft comment:
    Consider revising some phrasing in the new 'Why' section (e.g., use 'cannot' instead of 'can not' and 'what are the differences' instead of 'what's the differences') for clarity.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the grammar suggestions are technically correct, they are very minor style changes that don't impact understanding. The text is still perfectly clear as written. PR comments should focus on more substantive issues. Additionally, this is documentation text, not code logic. The grammar issues could make the documentation look less professional. Some readers may notice these small errors. The benefit of fixing these minor grammar issues is outweighed by the noise of having a PR comment about them. The text is understandable as-is. Delete this comment as it focuses on minor style issues rather than substantive changes that would meaningfully improve the code or documentation.
3. package.json:87
  • Draft comment:
    Updated devDependency from '@1stg/lint-staged' to '@1stg/nano-staged'. Confirm that all related scripts and hooks are aligned with this change.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
4. README.md:17
  • Draft comment:
    Typographical note: Consider using the consistent and official casing "TypeScript" instead of "Typescript" in the phrase "dependency on Typescript".
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the comment is technically correct about the official casing being "TypeScript", this is a very minor typographical issue in documentation. The meaning is completely clear either way. The rules say not to make comments that are obvious or unimportant. Casing in documentation is not a critical issue that requires a code change. The official branding of TypeScript could be considered important for consistency and professionalism in documentation. Some projects do care about getting branding exactly right. While branding consistency is nice to have, this is too minor of an issue to warrant a PR comment. It doesn't affect functionality and the meaning is clear either way. Delete this comment as it points out a very minor typographical issue that doesn't meaningfully impact the documentation's clarity or accuracy.
5. README.md:58
  • Draft comment:
    Typo: Consider changing "can not" to "cannot" for a more standard usage.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 0% vs. threshold = 50% While this is technically a valid grammar suggestion, it's an extremely minor stylistic change that doesn't impact code quality or functionality. Both "can not" and "cannot" are grammatically acceptable, though "cannot" is more common. The rules state not to make comments that are obvious or unimportant, and this seems to fall into that category. The change would make the text slightly more polished and professional. Some style guides do explicitly recommend "cannot" over "can not". While technically correct, this kind of minor prose style suggestion in documentation doesn't warrant a PR comment. It doesn't meaningfully improve the codebase. This comment should be deleted as it suggests an unimportant stylistic change that doesn't meaningfully improve the documentation.
6. README.md:71
  • Draft comment:
    Grammar issue: "So what's the differences" should be rephrased to "So what are the differences" or "So what's different".
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 0% vs. threshold = 50% The comment is about a real grammatical error in the text. However, the rules state to not make purely informative comments and to only comment if there is clearly a code change required. While this is a valid grammar correction, it's a minor documentation issue that doesn't affect functionality. The rules emphasize focusing on logic issues rather than pure text/documentation changes. The grammar error could make the documentation less professional and harder to understand for non-native English speakers. Documentation quality is important for open source projects. While documentation quality matters, this is a minor grammatical issue that doesn't significantly impact understanding. The rules explicitly state to focus on code logic issues and not make purely informative comments. The comment should be deleted as it violates the rule about not making purely informative comments. The grammatical error is minor and doesn't warrant a PR comment.

Workflow ID: wflow_25EMChWJpcftjLPe

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: 0

🧹 Nitpick comments (3)
README.md (3)

17-18: Clarify project introduction phrasing

The sentence “It starts as a fork of [eslint-plugin-import] using [get-tsconfig] to replace …” is informal and passive. Consider rephrasing for clarity and directness, for example:

- It starts as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] …
+ This project forks [`eslint-plugin-import`] and replaces [`tsconfig-paths`] and heavy [`typescript`] with [`get-tsconfig`] to streamline dependencies.

56-63: Improve wording and grammar in Why section

  • Replace “a lot of issues can not be fixed easily without API changes” with a more concise alternative, e.g.:
    - Because a lot of issues can not be fixed easily without API changes, see
    + Many issues cannot be resolved without API changes; see
  • Use “cannot” instead of “can not” for consistency.
🧰 Tools
🪛 LanguageTool

[style] ~58-~58: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~58-~58: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~58-~58: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


64-69: Use consistent casing and concise phrasing for “breaking changes”

  • Avoid ALL CAPS for “BREAKING CHANGES”—consider “Breaking changes” instead.
  • Rephrase for brevity:
    - And then it claimed to be allowed to update with BREAKING CHANGES at …, but it still doesn't happen or even seems to happen.
    + Although support for Breaking changes was promised in issue #170, it still hasn’t materialized.
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 8b2d6d3 and 32a6b98.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (3)
  • .nano-staged.js (1 hunks)
  • README.md (3 hunks)
  • package.json (1 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~58-~58: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~58-~58: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~58-~58: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


[style] ~77-~77: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...ingle resolver instance which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

⏰ Context from checks skipped due to timeout of 90000ms (19)
  • 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 20 and ESLint 8 on windows-latest
  • GitHub Check: autofix
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on ubuntu-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 ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on macos-latest
🔇 Additional comments (3)
README.md (1)

25-25: TOC updated with Why section

The new “Why” entry in the Table of Contents correctly reflects the added section. Nice catch updating the TOC.

package.json (1)

88-88:

✅ Verification successful

Verify complete replacement of lint-staged tooling

Ensure @1stg/lint-staged has been removed from all references (scripts, configs) and that nothing still points to it. You can run:


🏁 Script executed:

#!/bin/bash
# Verify removal of lint-staged references
rg --ignore-case '@1stg/lint-staged' || echo "No @1stg/lint-staged references found."

Length of output: 123


@1stg/lint-staged references fully removed

A global search (rg --ignore-case '@1stg/lint-staged') returned no matches, confirming that all references to the old lint-staged tooling have been removed.

.nano-staged.js (1)

1-1: Correctly re-exporting nano-staged

The file cleanly re-exports the default from @1stg/nano-staged/tsc, aligning with the updated devDependency. Looks good.

Copy link

coderabbitai bot commented May 14, 2025

Caution

No docstrings were generated.

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 35a0087 in 1 minute and 59 seconds. Click for details.
  • Reviewed 96 lines of code in 3 files
  • Skipped 1 files when reviewing.
  • Skipped posting 7 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. .nano-staged.js:1
  • Draft comment:
    Verify the update from '@1stg/lint-staged/tsc' to '@1stg/nano-staged/tsc' is intentional and the new package is correctly integrated.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. README.md:57
  • Draft comment:
    The new 'Why' and 'Differences' sections add valuable context. Consider minor rephrasing for clarity (e.g. 'cannot' instead of 'can not' and 'What are the differences' instead of 'So what's the differences').
  • Reason this comment was not posted:
    Confidence changes required: 50% <= threshold 50% None
3. package.json:85
  • Draft comment:
    Updated devDependency from '@1stg/lint-staged' to '@1stg/nano-staged'. Please confirm the new version (^0.1.1) is compatible with the project requirements.
  • Reason this comment was not posted:
    Confidence changes required: 33% <= threshold 50% None
4. README.md:17
  • Draft comment:
    There is a capitalization inconsistency with 'typescript'. The code snippet uses typescript in lowercase, but later in the sentence it appears as 'Typescript'. Consider using 'TypeScript' consistently throughout the file to match the official branding.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 20% vs. threshold = 50% While the comment is technically correct that TypeScript's official branding uses that capitalization, this seems like a minor stylistic issue. The meaning is clear regardless of capitalization. The comment doesn't point out a real code issue or bug. It's more of a nitpick about documentation style. The official TypeScript branding could be considered important for a professional open source project. Consistency in documentation can reflect attention to detail. While branding consistency is nice to have, this kind of minor documentation nitpick creates noise and doesn't meaningfully improve the code quality or functionality. Delete this comment as it's too minor and doesn't identify a significant issue that needs fixing.
5. README.md:59
  • Draft comment:
    Typographical suggestion: Consider replacing "can not" with "cannot" for a more standard form.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% The rules state to NOT make comments that are obvious or unimportant. This is a very minor stylistic suggestion about documentation that doesn't impact functionality. While technically correct that "cannot" is more standard, this level of nitpicking about documentation wording is not valuable enough to warrant a comment. The suggestion is technically correct from a formal writing perspective. Documentation quality and consistency does matter for open source projects. While documentation quality matters, this extremely minor stylistic suggestion doesn't rise to the level of importance that would justify asking the author to make a change. Both forms are widely understood. Delete this comment as it is too minor and unimportant to warrant asking for a change.
6. README.md:74
  • Draft comment:
    Typographical note: The phrase "what's the differences" sounds off. You might want to change it to "what are the differences" or "what's the difference" based on your intended meaning.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the comment points out a real grammatical issue, it's a very minor one that doesn't affect code functionality or documentation clarity. The rules state not to make purely informative comments or comments that are obvious/unimportant. Grammar nitpicks generally fall into this category unless they significantly impact understanding. The grammar error could potentially make the documentation look less professional. Some might argue that maintaining high quality even in small details is important for documentation. While professionalism is important, this is a very minor grammatical issue that doesn't impede understanding. The rules explicitly say not to make unimportant comments or purely informative ones. This comment should be deleted as it's too minor and purely informative, violating the rules about not making unimportant comments.
7. README.md:80
  • Draft comment:
    Minor phrasing note: Consider changing "memoization out of box" to "memoization out of the box" to improve clarity.
  • Reason this comment was not posted:
    Decided after close inspection that this draft comment was likely wrong and/or not actionable: usefulness confidence = 10% vs. threshold = 50% While the suggestion is technically correct English, it's a very minor documentation wording issue. The meaning is still clear with the current phrasing. The rules state not to make purely informative comments or comments that are obvious/unimportant. Documentation phrasing suggestions like this don't require code changes. The phrase "out of box" could be considered slightly confusing to non-native English speakers. Clear documentation is important. While clear docs are good, this is an extremely minor phrasing issue that doesn't impact understanding. The current phrase is still understandable. Delete this comment as it's a minor documentation phrasing suggestion that doesn't require code changes.

Workflow ID: wflow_lJEc9SKbldlBGxxX

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: 0

🧹 Nitpick comments (6)
README.md (6)

17-17: Refine fork rationale for conciseness and clarity

Current sentence is lengthy and repeats “heavy” twice. Consider rewriting for a more concise narrative. For example:

- It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less heavy dependency on Typescript, and cleaner dependencies altogether.
+ It began as a fork of [`eslint-plugin-import`], replacing `tsconfig-paths` and `typescript` with the lightweight [`get-tsconfig`] for faster performance and a cleaner dependency tree.

57-64: Improve "Why" section wording

The introduction uses informal phrasing and “can not”. Consider a more formal rewrite:

- Because a lot of issues can not be fixed easily without API changes, see
+ Many issues cannot be resolved without breaking API changes; see:
   - https://github.com/import-js/eslint-plugin-import/issues/1479
   - https://github.com/import-js/eslint-plugin-import/issues/2108
   - https://github.com/import-js/eslint-plugin-import/issues/2111
🧰 Tools
🪛 LanguageTool

[style] ~59-~59: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


65-68: Clarify rationale for forking due to API change refusal

The phrasing is a bit informal. For example:

- But [`eslint-plugin-import`] refused to accept BREAKING CHANGES for these issues, so we have to fork it.
+ However, [`eslint-plugin-import`] declined to accept these breaking API changes, necessitating our fork.

And for the subsequent sentence:

- And then [`eslint-plugin-import`] claimed to be allowed to update with BREAKING CHANGES at <link>, but it still doesn't happen or even seems to happen: <link>.
+ Although [`eslint-plugin-import`] later indicated openness to breaking changes (see <link>), no such updates have materialized.

70-70: Clarify future work statement

Rewrite for clarity and active voice:

- We haven't resolved all the issues yet, but we are working on it which could happen in the next major version (v5): <link>.
+ While not all issues are resolved, we plan to address them in the next major version (v5): <link>.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~70-~70: Possible missing comma found.
Context: ...l the issues yet, but we are working on it which could happen in the next major ve...

(AI_HYDRA_LEO_MISSING_COMMA)


76-82: Standardize bullet capitalization in Differences section

Bullets currently start with lowercase; for consistency, capitalize the first word of each item:

- - we target [Node …]
+ - We target [Node …]
- - we don't depend on old and outdated dependencies…
+ - We don't depend on old and outdated dependencies…
-

This aligns style with other sections and improves readability.

🧰 Tools
🪛 LanguageTool

[style] ~80-~80: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)


697-704: Organize and alphabetize new reference definitions

The new footnote definitions ([get-tsconfig], [tsconfig-paths], [typescript], [unrs-resolver], [napi-rs]) are appended but out of order. Consider grouping all custom references together and sorting them (e.g., alphabetically or by first use) to simplify maintenance.

Also applies to: 710-710

📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 32a6b98 and 35a0087.

⛔ Files ignored due to path filters (1)
  • yarn.lock is excluded by !**/yarn.lock, !**/*.lock
📒 Files selected for processing (3)
  • .nano-staged.js (1 hunks)
  • README.md (3 hunks)
  • package.json (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • package.json
  • .nano-staged.js
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~59-~59: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


[uncategorized] ~70-~70: Possible missing comma found.
Context: ...l the issues yet, but we are working on it which could happen in the next major ve...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~80-~80: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on windows-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 windows-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 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-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 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on ubuntu-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 18 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 8.56 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on macos-latest
🔇 Additional comments (1)
README.md (1)

25-26: TOC updated with new sections

The manual Table of Contents now includes links to the new “Why” and “Differences” sections, matching the added headings below.

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 0d2833a in 1 minute and 53 seconds. Click for details.
  • Reviewed 13 lines of code in 1 files
  • Skipped 0 files when reviewing.
  • Skipped posting 2 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. README.md:17
  • Draft comment:
    Consider rephrasing for clarity and consistency. For example, you could write: "It started as a fork of [eslint-plugin-import] that uses [get-tsconfig] to replace [tsconfig-paths] and reduce its heavy dependency on TypeScript, thereby improving speed and streamlining dependencies." This also ensures consistent capitalization of 'TypeScript'.
  • Reason this comment was not posted:
    Comment was on unchanged code.
2. README.md:17
  • Draft comment:
    It looks like "typescript" is referenced in two different ways in this line – once as typescript (in code style) and once in the link text as "Typescript". Consider using the official and consistent spelling "TypeScript" in both places.
  • Reason this comment was not posted:
    Comment was on unchanged code.

Workflow ID: wflow_lDSE4QJ3iBYUApK1

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: 0

🧹 Nitpick comments (3)
README.md (3)

17-18: Refine introductory sentence for clarity and conciseness

The new sentence is quite long and a bit wordy. Consider a more direct phrasing to improve readability.

-It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less [heavy dependency on Typescript](https://github.com/import-js/eslint-plugin-import/blob/da5f6ec13160cb288338db0c2a00c34b2d932f0d/src/exportMap/typescript.js#L16), and cleaner dependencies altogether.
+It began as a fork of [`eslint-plugin-import`] to replace `tsconfig-paths` and `typescript` with `get-tsconfig`, reducing dependency weight and improving performance.

59-64: Improve grammar and style in the introductory paragraph

To sound more formal and concise, replace “a lot of” with “many” and use “cannot” as one word. Also, rephrase for clarity:

-Because a lot of issues can not be fixed easily without API changes, see
+Many issues cannot be resolved without API changes. See:
🧰 Tools
🪛 LanguageTool

[style] ~59-~59: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


65-71: Enhance flow by removing leading conjunctions

Avoid starting sentences with “But” or “And then” for a cleaner narrative. For example:

-But [`eslint-plugin-import`] refused to accept BREAKING CHANGES for these issues, so we have to fork it.
+However, [`eslint-plugin-import`] declined these breaking changes, necessitating our fork.

-And then [`eslint-plugin-import`] claimed to be allowed to update with BREAKING CHANGES at <https://github.com/un-ts/eslint-plugin-import-x/issues/170>, but it still doesn't happen or even seems to happen: <https://github.com/import-js/eslint-plugin-import/pull/3091>.
+Later, [`eslint-plugin-import`] indicated a willingness to introduce breaking changes (see https://github.com/un-ts/eslint-plugin-import-x/issues/170), but no progress has been made (https://github.com/import-js/eslint-plugin-import/pull/3091).

This also tightens the language and improves readability.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 35a0087 and 0d2833a.

📒 Files selected for processing (1)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~59-~59: Consider using a synonym to be more concise.
Context: ... - License ## Why Because a lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...cense) ## Why Because a lot of issues can not be fixed easily without API changes, se...

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...Why Because a lot of issues can not be fixed easily without API changes, see - <htt...

(FIX_RESOLVE)


[style] ~80-~80: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on ubuntu-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.56 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 20 and ESLint 8.56 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 18 and ESLint 9 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 9 on macos-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.56 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 18 and ESLint 8 on macos-latest
🔇 Additional comments (3)
README.md (3)

25-26: TOC updated to include new sections

The Table of Contents now correctly lists the newly added "Why" and "Differences" sections.


57-58: New “Why” section heading inserted appropriately

The heading introduces the rationale at the top of the README and follows the existing style.


697-697: Link references for added dependencies are present and correct

The reference URLs for eslint-plugin-import, get-tsconfig, tsconfig-paths, typescript, and unrs-resolver match the labels introduced above. No issues found.

Also applies to: 701-704

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: 0

🧹 Nitpick comments (5)
README.md (5)

17-17: Consider improving clarity and grammar in the fork rationale
This sentence is lengthy and can be split for readability; also correct “heavy dependency on Typescript” to “heavy TypeScript dependency” and simplify phrasing.

Example diff:

-It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less [heavy dependency on Typescript](https://github.com/import-js/eslint-plugin-import/blob/da5f6ec13160cb288338db0c2a00c34b2d932f0d/src/exportMap/typescript.js#L16), and cleaner dependencies altogether.
+This project began as a fork of [`eslint-plugin-import`], replacing [`tsconfig-paths`] and the heavy [`typescript`]-based loader with [`get-tsconfig`] to reduce dependency bloat and improve performance.

59-63: Revise wording for readability and consistency
Use “cannot” instead of “can not”, replace “A lot of issues” with “Many issues”, and refine the lead-in to the bullet list. Also consider adding descriptive text for each issue link.

Example:

-A lot of issues can not be fixed easily without API changes. E.g. see:
+Many issues cannot be resolved without breaking API changes. For example:
🧰 Tools
🪛 LanguageTool

[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...nse](#license) ## Why A lot of issues can not be fixed easily without API changes. E....

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...se) ## Why A lot of issues can not be fixed easily without API changes. E.g. see: ...

(FIX_RESOLVE)


65-65: Wrap “breaking changes” in code ticks and lowercase for consistency
Standardize styling: use backticks for breaking changes and prefer lowercase.

Example:

-[`eslint-plugin-import`] refused to accept BREAKING CHANGES for these issues, so we had to fork it.
+[`eslint-plugin-import`] refused to accept `breaking changes` for these issues, so we had to fork it.

67-67: Soften tone and clarify progress statement
Replace “claims” with “states” and “still nothing is happening” with “no progress has been made” for neutrality.

Example:

-[`eslint-plugin-import`] now claims in <https://github.com/un-ts/eslint-plugin-import-x/issues/170> that it will accept BREAKING CHANGES. However, still nothing is happening: <https://github.com/import-js/eslint-plugin-import/pull/3091>.
+[`eslint-plugin-import`] now states in <https://github.com/un-ts/eslint-plugin-import-x/issues/170> that it will accept breaking changes, but no progress has been made: <https://github.com/import-js/eslint-plugin-import/pull/3091>.

69-69: Clarify the timeline and add comma for grammar
Add a comma before “which” and make it clear what will happen in the next major version.

Example:

-We haven't resolved all the issues yet, but we are working on it which could happen in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.
+We haven’t resolved all issues yet, but we are actively working on them, which we expect to address in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 0d2833a and ae2c473.

📒 Files selected for processing (1)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~58-~58: Consider using a synonym to be more concise.
Context: ...angelog) - License ## Why A lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...nse](#license) ## Why A lot of issues can not be fixed easily without API changes. E....

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...se) ## Why A lot of issues can not be fixed easily without API changes. E.g. see: ...

(FIX_RESOLVE)


[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

⏰ 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 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on windows-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.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 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 20 and ESLint 8.56 on windows-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 9 on macos-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 20 and ESLint 8.56 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 22 and ESLint 8.56 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 18 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on macos-latest
🔇 Additional comments (2)
README.md (2)

25-26: TOC entries for new sections look correct
The added - [Why](#why) and - [Differences](#differences) align with the new headings.


57-57: New “Why” section introduced appropriately
The heading clearly marks the rationale section at the top.

@JounQin
Copy link
Member Author

JounQin commented May 15, 2025

@benmccann Great thanks! Just let me know when all suggestions are made so that I can apply them once together.

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)
README.md (2)

17-18: Refine the fork rationale sentence for clarity
The current sentence is lengthy and mixes multiple points. Consider splitting it and reordering to improve readability.
Proposed diff:

-It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less [heavy dependency on Typescript], and cleaner dependencies altogether.
+This plugin began as a fork of [`eslint-plugin-import`] to reduce dependency weight and improve speed. It replaces `tsconfig-paths` and the heavy [`typescript`] dependency with [`get-tsconfig`], resulting in a leaner and faster implementation.

71-83: Improve bullet consistency in “Differences” section

  • Capitalize the first word of each bullet for parallel structure.
  • Consider rephrasing the question at line 73 to “What are the exact differences from eslint-plugin-import?”
    Example:
## Differences

What are the exact differences from `eslint-plugin-import`?

- We target Node `^18.18.0 || ^20.9.0 || >=21.1.0` and ESLint `^8.57.0 || ^9.0.0`, while `eslint-plugin-import` targets Node `>=4` and ESLint `^2 || ... || ^9`.
- We have only 49 dependencies versus 117 in `eslint-plugin-import`.
- We load tsconfig files with the lightweight `get-tsconfig` package instead of `tsconfig-paths` + `typescript`.
- We use `unrs-resolver` (a `napi-rs` project) instead of `resolve` for faster support of the `exports` field.
- Our v3 resolver shares a single instance for built-in caching and memoization.
- ...
🧰 Tools
🪛 LanguageTool

[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between ae2c473 and 2db56e5.

📒 Files selected for processing (1)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~58-~58: Consider using a synonym to be more concise.
Context: ...angelog) - License ## Why A lot of issues can not be fixed easily without ...

(A_LOT_OF)


[style] ~59-~59: Unless you want to emphasize “not”, use “cannot” which is more common.
Context: ...nse](#license) ## Why A lot of issues can not be fixed easily without API changes. E....

(CAN_NOT_PREMIUM)


[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...se) ## Why A lot of issues can not be fixed easily without API changes. E.g. see: ...

(FIX_RESOLVE)


[uncategorized] ~69-~69: Possible missing comma found.
Context: ...l the issues yet, but we are working on it which could happen in the next major ve...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

🪛 markdownlint-cli2 (0.17.2)
README.md

709-709: Link and image reference definitions should be needed
Unused link or image reference definition: "napi-rs"

(MD053, link-image-reference-definitions)

⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 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 20 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 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 macos-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8.56 on macos-latest
🔇 Additional comments (2)
README.md (2)

25-26: Include new sections in the Table of Contents
The new "Why" and "Differences" sections are correctly added to the TOC.


696-703: Link reference definitions appear correct
All new link definitions are used in the document. No unused references detected.

Also applies to: 709-709

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 360a34b in 44 seconds. Click for details.
  • Reviewed 37 lines of code in 1 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. README.md:57
  • Draft comment:
    Improved phrasing in the 'Why' section for clarity: replacing 'A lot of issues can not' with 'Many issues cannot' and 'E.g. see:' with 'For example, see:'.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
2. README.md:67
  • Draft comment:
    Good update for subject-verb agreement: 'working on it' changed to 'working on them' to match the plural 'issues'.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
3. README.md:698
  • Draft comment:
    Added the [napi-rs] reference link for clarity in the Differences section; ensure it is correctly linked.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None
4. README.md:706
  • Draft comment:
    Removed duplicate [napi-rs] reference link to avoid redundancy in the dependency links section.
  • Reason this comment was not posted:
    Confidence changes required: 0% <= threshold 50% None

Workflow ID: wflow_CQoLQ8gFYP32H8O7

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: 0

🧹 Nitpick comments (6)
README.md (6)

17-17: Clarify sentence structure and standardize casing
The new sentence begins with "It started…", which can be ambiguous. Consider rephrasing to start with the subject ("This plugin") and standardizing "TypeScript". Also simplify the dependency clause for readability.

-It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less [heavy dependency on Typescript](https://github.com/import-js/eslint-plugin-import/blob/da5f6ec13160cb288338db0c2a00c34b2d932f0d/src/exportMap/typescript.js#L16), and cleaner dependencies altogether.
+This plugin started as a fork of [`eslint-plugin-import`], replacing [`tsconfig-paths`] and the heavy [`typescript`] dependency with [`get-tsconfig`] under the hood for better performance and cleaner dependencies.

57-64: Refine the “Why” introduction

  • Emphasize that the unresolved issues require breaking API changes.
  • Use “resolved” instead of “fixed” for a formal tone.
-## Why
-
-Many issues cannot be fixed easily without API changes. For example, see:
+## Why
+
+Many issues cannot be resolved without breaking API changes. For example:
🧰 Tools
🪛 LanguageTool

[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...license) ## Why Many issues cannot be fixed easily without API changes. For example...

(FIX_RESOLVE)


65-68: Streamline the fork rationale
Combine and polish the transition to improve flow and reduce wordiness.

-[`eslint-plugin-import`] refused to accept BREAKING CHANGES for these issues, so we had to fork it.
+[`eslint-plugin-import`] refused to accept the required breaking changes; therefore, we forked the project.

-[`eslint-plugin-import`] now claims in <https://github.com/un-ts/eslint-plugin-import-x/issues/170> that it will accept BREAKING CHANGES. However, still nothing is happening: <https://github.com/import-js/eslint-plugin-import/pull/3091>.
+Although [`eslint-plugin-import`] now claims it will accept breaking changes (<https://github.com/un-ts/eslint-plugin-import-x/issues/170>), no progress has been made: <https://github.com/import-js/eslint-plugin-import/pull/3091>.

69-70: Improve clarity of the closing statement
Split into two sentences and tighten phrasing for readability.

-We haven't resolved all the issues yet, but we are working on them, which could happen in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.
+We haven’t resolved all issues yet, but we’re actively working on them. Changes may land in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.

75-80: Standardize bullet style in “Differences”
The list mixes lowercase starts, uppercase starts, and inconsistent punctuation. For consistency, begin each bullet with an uppercase letter and end with a period. Optionally, you can rewrite for parallel structure:

-- we target Node `^18.18.0 || ^20.9.0 || >=21.1.0` + ESLint `^8.57.0 || ^9.0.0`, while `eslint-plugin-import` targets Node `>=4` and ESLint `^2 || ^3 || …`.
+- We target Node `^18.18.0 || ^20.9.0 || >=21.1.0` and ESLint `^8.57.0 || ^9.0.0`, whereas `eslint-plugin-import` supports Node `>=4` and ESLint `^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9`.

(Apply similar normalization to the remaining bullets.)

🧰 Tools
🪛 LanguageTool

[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)


79-79: Replace “all across” with a concise alternative
Avoid wordiness by using “throughout” instead of “all across”:

-Our [v3 resolver] interface shares a single `resolver` instance by default which is used all across resolving chains so it would benefit from caching and memoization out-of-the-box.
+Our [v3 resolver] interface shares a single `resolver` instance by default throughout resolving chains, benefiting from caching and memoization out of the box.
🧰 Tools
🪛 LanguageTool

[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 2db56e5 and 360a34b.

📒 Files selected for processing (1)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...license) ## Why Many issues cannot be fixed easily without API changes. For example...

(FIX_RESOLVE)


[style] ~79-~79: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)

⏰ Context from checks skipped due to timeout of 90000ms (21)
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on ubuntu-latest
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 9 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 18 and ESLint 9 on windows-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 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 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 20 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 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 18 and ESLint 9 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on macos-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 18 and ESLint 8.56 on macos-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on macos-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on macos-latest
🔇 Additional comments (2)
README.md (2)

25-26: Verify Table of Contents entries
The newly added entries for "Why" and "Differences" correctly reference #why and #differences anchors and match the added sections below.


696-696: Confirm reference definitions for new labels
All new link references (eslint-plugin-import, get-tsconfig, napi-rs, tsconfig-paths, typescript, unrs-resolver) are properly defined at the end of the file.

Also applies to: 700-704

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: 0

🧹 Nitpick comments (3)
README.md (3)

17-18: Use correct casing and refine phrasing for clarity
The sentence mixes casing (“Typescript”) and the phrase “through less heavy dependency” is awkward. Consider rephrasing and using the proper product name TypeScript.

-It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster, through less [heavy dependency on Typescript](https://github.com/import-js/eslint-plugin-import/blob/da5f6ec13160cb288338db0c2a00c34b2d932f0d/src/exportMap/typescript.js#L16), and cleaner dependencies altogether.
+It started as a fork of [`eslint-plugin-import`] using [`get-tsconfig`] to replace [`tsconfig-paths`] and heavy [`typescript`] under the hood, making it faster with a lighter dependency on [TypeScript], and resulting in a cleaner dependency graph.

57-71: Polish the “Why” section for style and consistency
A few minor tweaks can improve readability and tone:

  • Replace “still nothing is happening” with “no progress has been made.”
  • Use “Meanwhile” instead of “In the meantime” for conciseness.
  • Normalize casing/formatting of “Breaking Changes” (e.g. sentence-case or title-case consistently).
## Why

-Many issues cannot be fixed easily without API changes. For example, see:
+Many issues cannot be fixed easily without breaking API changes. For example:

- [`eslint-plugin-import`] refused to accept BREAKING CHANGES for these issues, so we had to fork it.
+[`eslint-plugin-import`] refused to accept breaking changes for these issues, so we forked it.

-[`eslint-plugin-import`] now claims in <https://github.com/un-ts/eslint-plugin-import-x/issues/170> that it will accept BREAKING CHANGES. However, still nothing is happening: <https://github.com/import-js/eslint-plugin-import/pull/3091>.
+[`eslint-plugin-import`] now claims in <https://github.com/un-ts/eslint-plugin-import-x/issues/170> that it will accept breaking changes. However, no progress has been made: <https://github.com/import-js/eslint-plugin-import/pull/3091>.

-[`eslint-plugin-import`] refuses to support the `exports` feature, and the maintainer even locked the feature request issue <https://github.com/import-js/eslint-plugin-import/issues/1810> to prevent future discussion. In the meantime, `eslint-plugin-import-x` now provides first-party support for the `exports` feature <https://github.com/un-ts/eslint-plugin-import-x/pull/209>, which will become the default in the next major version (v5).
+[`eslint-plugin-import`] refuses to support the `exports` feature and even locked the feature request issue <https://github.com/import-js/eslint-plugin-import/issues/1810>. Meanwhile, `eslint-plugin-import-x` provides first-party support for `exports` <https://github.com/un-ts/eslint-plugin-import-x/pull/209>, which will become the default in v5.

-We haven't resolved all the issues yet, but we are working on them, which could happen in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.
+We haven’t resolved all issues yet, but we’re working on them and expect to address them in the next major version (v5): <https://github.com/un-ts/eslint-plugin-import-x/issues/235>.
🧰 Tools
🪛 LanguageTool

[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...license) ## Why Many issues cannot be fixed easily without API changes. For example...

(FIX_RESOLVE)


[style] ~69-~69: ‘In the meantime’ might be wordy. Consider a shorter alternative.
Context: ...ues/1810> to prevent future discussion. In the meantime, eslint-plugin-import-x now provides ...

(EN_WORDINESS_PREMIUM_IN_THE_MEANTIME)


702-706: Remove unused link reference
The [napi-rs] reference is defined but never used in the document. You can remove this line to satisfy markdownlint and keep the link definitions tidy.

-[`napi-rs`]: https://github.com/napi-rs/napi-rs
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

703-703: Link and image reference definitions should be needed
Unused link or image reference definition: "napi-rs"

(MD053, link-image-reference-definitions)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Cache: Disabled due to data retention organization setting
Knowledge Base: Disabled due to data retention organization setting

📥 Commits

Reviewing files that changed from the base of the PR and between 360a34b and f74abd6.

📒 Files selected for processing (1)
  • README.md (3 hunks)
🧰 Additional context used
🪛 LanguageTool
README.md

[style] ~59-~59: Consider using a different verb for a more formal wording.
Context: ...license) ## Why Many issues cannot be fixed easily without API changes. For example...

(FIX_RESOLVE)


[style] ~69-~69: ‘In the meantime’ might be wordy. Consider a shorter alternative.
Context: ...ues/1810> to prevent future discussion. In the meantime, eslint-plugin-import-x now provides ...

(EN_WORDINESS_PREMIUM_IN_THE_MEANTIME)


[style] ~81-~81: ‘all across’ might be wordy. Consider a shorter alternative.
Context: ...lver` instance by default which is used all across resolving chains so it would benefit fr...

(EN_WORDINESS_PREMIUM_ALL_ACROSS)


[uncategorized] ~81-~81: A comma might be missing here.
Context: ...ault which is used all across resolving chains so it would benefit from caching and me...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

🪛 markdownlint-cli2 (0.17.2)
README.md

703-703: Link and image reference definitions should be needed
Unused link or image reference definition: "napi-rs"

(MD053, link-image-reference-definitions)

⏰ Context from checks skipped due to timeout of 90000ms (20)
  • GitHub Check: Codacy Static Code Analysis
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 8 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 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 18 and ESLint 8 on windows-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.56 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.56 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 18 and ESLint 9 on windows-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8 on ubuntu-latest
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 8.56 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 18 and ESLint 9 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 18 and ESLint 8.56 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
  • GitHub Check: Lint and Test with Node.js 20 and ESLint 9 on macos-latest
  • GitHub Check: Lint and Test with Node.js 22 and ESLint 8.56 on macos-latest
🔇 Additional comments (1)
README.md (1)

25-26: Add “Why” and “Differences” to the Table of Contents
The new TOC entries correctly link to the newly introduced sections and improve navigation.

@JounQin
Copy link
Member Author

JounQin commented May 15, 2025

Maybe @benmccann want to take another look again since @SukkaW reviews and suggestions.

@JounQin JounQin merged commit de7bae3 into master May 16, 2025
72 checks passed
@JounQin JounQin deleted the docs/why branch May 16, 2025 02:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

docs: add Why or Different with eslint-plugin-import in readme
4 participants