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
-
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
/
-
Add a GitHub Actions workflow so the lint check runs on every PR and push to master.
-
Fix all existing lint violations across the codebase.
-
Remove yarn.lock and standardize on npm, consistent with all CI workflows.
Problem
Internal links in JSX pages are prone to formatting bugs that break navigation. For example, PR #155 fixed links in
gsoc.jswhere relative paths likehref="gsoc_ideas"andhref="gsoc_ideas.html"were used instead of the correct absolute pathhref="/gsoc_ideas/".The same class of issues still exists in other files (e.g.
news.jshashref="gsoc.html"and URLs with leading whitespace likehref=" https://...").Currently nothing catches these at development time because:
onBrokenLinksis set to"ignore"indocusaurus.config.jsAdditionally, the project has both a
yarn.lockandpackage-lock.jsoneven though CI exclusively uses npm, which causes confusion.Proposed Solution
Add ESLint with a custom
no-bad-internal-linksrule that flagshrefandtoattributes in JSX where:href=" https://...")/(e.g.href="gsoc.html"should behref="/gsoc/").htmlextensions: Docusaurus uses clean URLs, so.htmlshould not be used/Add a GitHub Actions workflow so the lint check runs on every PR and push to master.
Fix all existing lint violations across the codebase.
Remove
yarn.lockand standardize on npm, consistent with all CI workflows.