mdx-linklist 0.3.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -28
- package/dist/cli.js +9 -9
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,8 @@ npm install -g mdx-linklist
|
|
|
15
15
|
Or run directly with npx:
|
|
16
16
|
|
|
17
17
|
```bash
|
|
18
|
-
|
|
18
|
+
# Check current directory
|
|
19
|
+
npx mdx-linklist check .
|
|
19
20
|
```
|
|
20
21
|
|
|
21
22
|
## Usage
|
|
@@ -23,7 +24,11 @@ npx mdx-linklist check ./docs
|
|
|
23
24
|
### Basic Check
|
|
24
25
|
|
|
25
26
|
```bash
|
|
27
|
+
# Check specific directory
|
|
26
28
|
mdx-linklist check ./docs
|
|
29
|
+
|
|
30
|
+
# Check current directory
|
|
31
|
+
mdx-linklist check .
|
|
27
32
|
```
|
|
28
33
|
|
|
29
34
|
### Options
|
|
@@ -77,9 +82,11 @@ Many documentation frameworks use route-style paths that map to files in a subdi
|
|
|
77
82
|
|
|
78
83
|
```markdown
|
|
79
84
|
<!-- Link in MDX -->
|
|
85
|
+
|
|
80
86
|
[Getting Started](/guides/intro)
|
|
81
87
|
|
|
82
88
|
<!-- Actual file location -->
|
|
89
|
+
|
|
83
90
|
pages/guides/intro.mdx
|
|
84
91
|
```
|
|
85
92
|
|
|
@@ -109,35 +116,55 @@ You can use CLI flags (recommended) or create a `mdx-linklist.config.json` file:
|
|
|
109
116
|
|
|
110
117
|
### Config Options
|
|
111
118
|
|
|
112
|
-
| Option
|
|
113
|
-
|
|
114
|
-
| `include`
|
|
115
|
-
| `exclude`
|
|
116
|
-
| `ignorePatterns`
|
|
117
|
-
| `ignoreDomains`
|
|
118
|
-
| `timeout`
|
|
119
|
-
| `retries`
|
|
120
|
-
| `concurrency`
|
|
121
|
-
| `routePrefixes`
|
|
122
|
-
| `customComponents` | `string[]` | `["Link", "A"]`
|
|
119
|
+
| Option | Type | Default | Description |
|
|
120
|
+
| ------------------ | ---------- | ---------------------------------------------------- | ------------------------------------- |
|
|
121
|
+
| `include` | `string[]` | `["./**/*.mdx", "./**/*.md"]` | Glob patterns for files to scan |
|
|
122
|
+
| `exclude` | `string[]` | `["**/node_modules/**", "**/dist/**", "**/.git/**"]` | Glob patterns to exclude |
|
|
123
|
+
| `ignorePatterns` | `string[]` | `["localhost:*", "127.0.0.1:*", "*.local"]` | URL patterns to skip |
|
|
124
|
+
| `ignoreDomains` | `string[]` | `[]` | Domains to skip |
|
|
125
|
+
| `timeout` | `number` | `10000` | External request timeout (ms) |
|
|
126
|
+
| `retries` | `number` | `2` | Retry count for failed requests |
|
|
127
|
+
| `concurrency` | `number` | `10` | Parallel external requests |
|
|
128
|
+
| `routePrefixes` | `string[]` | `[]` | Directory prefixes for absolute paths |
|
|
129
|
+
| `customComponents` | `string[]` | `["Link", "A"]` | JSX components with href props |
|
|
123
130
|
|
|
124
131
|
## What It Checks
|
|
125
132
|
|
|
126
133
|
### Internal Links
|
|
134
|
+
|
|
127
135
|
- Relative paths (`./page.mdx`, `../other/page.mdx`)
|
|
128
136
|
- Absolute paths (`/docs/guide`)
|
|
129
137
|
- Combined with anchors (`./page.mdx#section`) - validates file exists
|
|
130
138
|
|
|
131
139
|
### External Links
|
|
140
|
+
|
|
132
141
|
- HTTP/HTTPS URLs
|
|
133
142
|
- Follows redirects
|
|
134
143
|
- Reports status codes
|
|
135
144
|
|
|
136
145
|
### JSX Components
|
|
146
|
+
|
|
137
147
|
- `<Link href="...">`
|
|
138
148
|
- `<A href="...">`
|
|
139
149
|
- Custom components (configurable via `--component` flag)
|
|
140
150
|
|
|
151
|
+
## Progress Display
|
|
152
|
+
|
|
153
|
+
While checking links, you'll see fun progress messages:
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
☕ Brewing your link report...
|
|
157
|
+
📁 Found 3 files
|
|
158
|
+
🎣 Fishing for links...
|
|
159
|
+
🔗 Caught 8 links
|
|
160
|
+
🏠 Knocking on 6 local doors...
|
|
161
|
+
🏠 Visited 6 local doors
|
|
162
|
+
🌐 Pinging the interwebs (2 links)...
|
|
163
|
+
🌐 Pinged 2 external links
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Use `--no-progress` to hide these messages.
|
|
167
|
+
|
|
141
168
|
## Output Formats
|
|
142
169
|
|
|
143
170
|
### Console (default)
|
|
@@ -178,22 +205,6 @@ mdx-linklist check ./docs --format json
|
|
|
178
205
|
mdx-linklist check ./docs --format markdown --output report.md
|
|
179
206
|
```
|
|
180
207
|
|
|
181
|
-
## CI Integration
|
|
182
|
-
|
|
183
|
-
The CLI exits with code 1 when broken links are found:
|
|
184
|
-
|
|
185
|
-
```yaml
|
|
186
|
-
# GitHub Actions
|
|
187
|
-
- name: Check links
|
|
188
|
-
run: npx mdx-linklist check ./docs --internal-only
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
Use `--no-fail` to always exit with code 0:
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
mdx-linklist check ./docs --no-fail
|
|
195
|
-
```
|
|
196
|
-
|
|
197
208
|
## Development
|
|
198
209
|
|
|
199
210
|
```bash
|
package/dist/cli.js
CHANGED
|
@@ -71,21 +71,21 @@ async function runCheck(directory, options) {
|
|
|
71
71
|
const format = options.format;
|
|
72
72
|
const verbose = options.verbose;
|
|
73
73
|
// Scan for files
|
|
74
|
-
let spinner = showProgress ? ora('
|
|
74
|
+
let spinner = showProgress ? ora(' ☕ Brewing your link report... ').start() : null;
|
|
75
75
|
const files = await scanFiles(directory, config);
|
|
76
76
|
if (files.length === 0) {
|
|
77
|
-
spinner?.fail('No MDX files found');
|
|
77
|
+
spinner?.fail(' 😢 No MDX files found ');
|
|
78
78
|
process.exit(0);
|
|
79
79
|
}
|
|
80
|
-
spinner?.succeed(`Found ${files.length} files`);
|
|
80
|
+
spinner?.succeed(` 📁 Found ${files.length} files `);
|
|
81
81
|
// Extract links from all files
|
|
82
|
-
spinner = showProgress ? ora('
|
|
82
|
+
spinner = showProgress ? ora(' 🎣 Fishing for links... ').start() : null;
|
|
83
83
|
const allLinks = [];
|
|
84
84
|
for (const file of files) {
|
|
85
85
|
const links = extractLinksFromFile(file, config);
|
|
86
86
|
allLinks.push(...links);
|
|
87
87
|
}
|
|
88
|
-
spinner?.succeed(`
|
|
88
|
+
spinner?.succeed(` 🔗 Caught ${allLinks.length} links `);
|
|
89
89
|
// Filter links based on config
|
|
90
90
|
let linksToCheck = allLinks;
|
|
91
91
|
if (config.internalOnly) {
|
|
@@ -101,21 +101,21 @@ async function runCheck(directory, options) {
|
|
|
101
101
|
const externalLinks = linksToCheck.filter((l) => l.type === 'external');
|
|
102
102
|
if (internalLinks.length > 0) {
|
|
103
103
|
spinner = showProgress
|
|
104
|
-
? ora(`
|
|
104
|
+
? ora(` 🏠 Knocking on ${internalLinks.length} local doors... `).start()
|
|
105
105
|
: null;
|
|
106
106
|
for (const link of internalLinks) {
|
|
107
107
|
const result = await validateInternalLink(link, baseDir, config, files);
|
|
108
108
|
results.push(result);
|
|
109
109
|
}
|
|
110
|
-
spinner?.succeed(`
|
|
110
|
+
spinner?.succeed(` 🏠 Visited ${internalLinks.length} local doors `);
|
|
111
111
|
}
|
|
112
112
|
if (externalLinks.length > 0 && !config.internalOnly) {
|
|
113
113
|
spinner = showProgress
|
|
114
|
-
? ora(`
|
|
114
|
+
? ora(` 🌐 Pinging the interwebs (${externalLinks.length} links)... `).start()
|
|
115
115
|
: null;
|
|
116
116
|
const externalResults = await validateExternalLinks(externalLinks, config);
|
|
117
117
|
results.push(...externalResults);
|
|
118
|
-
spinner?.succeed(`
|
|
118
|
+
spinner?.succeed(` 🌐 Pinged ${externalLinks.length} external links `);
|
|
119
119
|
}
|
|
120
120
|
// Calculate summary
|
|
121
121
|
const summary = {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|