mirror of
https://github.com/apache/superset.git
synced 2026-05-23 08:45:45 +00:00
fix(docs): finish bare-relative link conversion + add lint guardrail
Copilot flagged two stragglers on editors.md where the previous file-by-file conversion stopped halfway. Sweeping for the same pattern across the active content tree found 76 bare relative internal links total — 14 in this PR's already-modified files (Copilot's two plus twelve more) and 62 in unchanged files. Why the build doesn't catch this ───────────────────────────────── `onBrokenLinks: 'throw'` (set in this PR) only validates *file-based* markdown references — links whose URL ends in `.md` / `.mdx`. Those go through Docusaurus's file resolver, which can prove the target exists. Bare relative URL paths like `[Foo](../foo)` skip that resolver entirely; Docusaurus emits them as raw hrefs. The browser then resolves them against the *current* page URL, and for trailing-slash routes that almost always lands in the wrong directory. Page navigates client-side and 404s. The linkinator job in CI *can* catch these, but it's `continue-on-error: true` so findings are advisory. What this commit does ────────────────────── 1. Fix all 76 bare relative internal links across the active docs tree by appending `.md` to each one (preserving anchors / query strings). All 76 targets resolved to real files; no link targets changed, only the form of the reference. 2. Fix the component-page generator. 54 of the 76 bare links lived in two auto-generated index files (`components/ui/index.mdx` and `components/design-system/index.mdx`). The next regeneration would have undone the manual fixes without this. The two emission sites in `generate-superset-components.mjs` now emit `.md`-suffixed links; comment at the call site explains why. 3. Add `docs/scripts/lint-docs-links.mjs` — fast source-level linter that scans `.md`/`.mdx` files under the active content trees (skipping `versioned_docs/` snapshots) and fails if it finds any markdown link whose URL starts with `./` or `../` and does not end in `.md`/`.mdx`. Excludes asset paths (.png, .json, etc.) and ignores fenced code blocks. Wired up as `yarn lint:docs-links`. 4. Add a `Lint docs links` step to `superset-docs-verify.yml`, running before the build step so PRs that introduce the pattern fail in seconds rather than at build-time / not at all. Blocking, not advisory — exactly the gap linkinator's `continue-on-error` leaves open. Verified ──────── - `yarn lint:docs-links` exits 0 on the cleaned tree - Re-introducing one bare link makes the linter report the exact file:line with the offending URL, exit code 1 - All 76 originally-flagged targets resolved to real `.md` / `.mdx` files; only the form of the reference changed
This commit is contained in:
@@ -29,10 +29,10 @@ sidebar_position: 1
|
||||
|
||||
## Components
|
||||
|
||||
- [DropdownContainer](./dropdowncontainer)
|
||||
- [Flex](./flex)
|
||||
- [Grid](./grid)
|
||||
- [Layout](./layout)
|
||||
- [MetadataBar](./metadatabar)
|
||||
- [Space](./space)
|
||||
- [Table](./table)
|
||||
- [DropdownContainer](./dropdowncontainer.md)
|
||||
- [Flex](./flex.md)
|
||||
- [Grid](./grid.md)
|
||||
- [Layout](./layout.md)
|
||||
- [MetadataBar](./metadatabar.md)
|
||||
- [Space](./space.md)
|
||||
- [Table](./table.md)
|
||||
|
||||
@@ -62,7 +62,7 @@ This documentation is auto-generated from Storybook stories. To add or update co
|
||||
4. Run `yarn generate:superset-components` in the `docs/` directory
|
||||
|
||||
:::info Work in Progress
|
||||
This component library is actively being documented. See the [Components TODO](./TODO) page for a list of components awaiting documentation.
|
||||
This component library is actively being documented. See the [Components TODO](./TODO.md) page for a list of components awaiting documentation.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
@@ -29,49 +29,49 @@ sidebar_position: 1
|
||||
|
||||
## Components
|
||||
|
||||
- [AutoComplete](./autocomplete)
|
||||
- [Avatar](./avatar)
|
||||
- [Badge](./badge)
|
||||
- [Breadcrumb](./breadcrumb)
|
||||
- [Button](./button)
|
||||
- [ButtonGroup](./buttongroup)
|
||||
- [CachedLabel](./cachedlabel)
|
||||
- [Card](./card)
|
||||
- [Checkbox](./checkbox)
|
||||
- [Collapse](./collapse)
|
||||
- [DatePicker](./datepicker)
|
||||
- [Divider](./divider)
|
||||
- [EditableTitle](./editabletitle)
|
||||
- [EmptyState](./emptystate)
|
||||
- [FaveStar](./favestar)
|
||||
- [IconButton](./iconbutton)
|
||||
- [Icons](./icons)
|
||||
- [IconTooltip](./icontooltip)
|
||||
- [InfoTooltip](./infotooltip)
|
||||
- [Input](./input)
|
||||
- [Label](./label)
|
||||
- [List](./list)
|
||||
- [ListViewCard](./listviewcard)
|
||||
- [Loading](./loading)
|
||||
- [Menu](./menu)
|
||||
- [Modal](./modal)
|
||||
- [ModalTrigger](./modaltrigger)
|
||||
- [Popover](./popover)
|
||||
- [ProgressBar](./progressbar)
|
||||
- [Radio](./radio)
|
||||
- [SafeMarkdown](./safemarkdown)
|
||||
- [Select](./select)
|
||||
- [Skeleton](./skeleton)
|
||||
- [Slider](./slider)
|
||||
- [Steps](./steps)
|
||||
- [Switch](./switch)
|
||||
- [TableCollection](./tablecollection)
|
||||
- [TableView](./tableview)
|
||||
- [Tabs](./tabs)
|
||||
- [Timer](./timer)
|
||||
- [Tooltip](./tooltip)
|
||||
- [Tree](./tree)
|
||||
- [TreeSelect](./treeselect)
|
||||
- [Typography](./typography)
|
||||
- [UnsavedChangesModal](./unsavedchangesmodal)
|
||||
- [Upload](./upload)
|
||||
- [AutoComplete](./autocomplete.md)
|
||||
- [Avatar](./avatar.md)
|
||||
- [Badge](./badge.md)
|
||||
- [Breadcrumb](./breadcrumb.md)
|
||||
- [Button](./button.md)
|
||||
- [ButtonGroup](./buttongroup.md)
|
||||
- [CachedLabel](./cachedlabel.md)
|
||||
- [Card](./card.md)
|
||||
- [Checkbox](./checkbox.md)
|
||||
- [Collapse](./collapse.md)
|
||||
- [DatePicker](./datepicker.md)
|
||||
- [Divider](./divider.md)
|
||||
- [EditableTitle](./editabletitle.md)
|
||||
- [EmptyState](./emptystate.md)
|
||||
- [FaveStar](./favestar.md)
|
||||
- [IconButton](./iconbutton.md)
|
||||
- [Icons](./icons.md)
|
||||
- [IconTooltip](./icontooltip.md)
|
||||
- [InfoTooltip](./infotooltip.md)
|
||||
- [Input](./input.md)
|
||||
- [Label](./label.md)
|
||||
- [List](./list.md)
|
||||
- [ListViewCard](./listviewcard.md)
|
||||
- [Loading](./loading.md)
|
||||
- [Menu](./menu.md)
|
||||
- [Modal](./modal.md)
|
||||
- [ModalTrigger](./modaltrigger.md)
|
||||
- [Popover](./popover.md)
|
||||
- [ProgressBar](./progressbar.md)
|
||||
- [Radio](./radio.md)
|
||||
- [SafeMarkdown](./safemarkdown.md)
|
||||
- [Select](./select.md)
|
||||
- [Skeleton](./skeleton.md)
|
||||
- [Slider](./slider.md)
|
||||
- [Steps](./steps.md)
|
||||
- [Switch](./switch.md)
|
||||
- [TableCollection](./tablecollection.md)
|
||||
- [TableView](./tableview.md)
|
||||
- [Tabs](./tabs.md)
|
||||
- [Timer](./timer.md)
|
||||
- [Tooltip](./tooltip.md)
|
||||
- [Tree](./tree.md)
|
||||
- [TreeSelect](./treeselect.md)
|
||||
- [Typography](./typography.md)
|
||||
- [UnsavedChangesModal](./unsavedchangesmodal.md)
|
||||
- [Upload](./upload.md)
|
||||
|
||||
Reference in New Issue
Block a user