Skip to content

Add ESLint rule to catch broken internal links and standardize on npm #156

@allgandalf

Description

@allgandalf

Problem

Internal links in JSX pages are prone to formatting bugs that break navigation. For example, PR #155 fixed links in gsoc.js where relative paths like href="gsoc_ideas" and href="gsoc_ideas.html" were used instead of the correct absolute path href="/gsoc_ideas/".

The same class of issues still exists in other files (e.g. news.js has href="gsoc.html" and URLs with leading whitespace like href=" https://...").

Currently nothing catches these at development time because:

  • The project has no linting setup
  • onBrokenLinks is set to "ignore" in docusaurus.config.js

Additionally, the project has both a yarn.lock and package-lock.json even though CI exclusively uses npm, which causes confusion.

Proposed Solution

  1. Add ESLint with a custom no-bad-internal-links rule that flags href and to attributes in JSX where:

    • Whitespace in URLs: leading/trailing spaces (e.g. href=" https://...")
    • Relative internal links: missing leading / (e.g. href="gsoc.html" should be href="/gsoc/")
    • .html extensions: Docusaurus uses clean URLs, so .html should not be used
    • Missing trailing slash: internal links should end with /
  2. Add a GitHub Actions workflow so the lint check runs on every PR and push to master.

  3. Fix all existing lint violations across the codebase.

  4. Remove yarn.lock and standardize on npm, consistent with all CI workflows.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions