fix(nx-dev): fix internal link checker (#19606)

This commit is contained in:
Isaac Mann 2023-10-13 15:47:33 -04:00 committed by GitHub
parent 8249ace5a2
commit 0e1962237b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 37 deletions

View File

@ -18,6 +18,12 @@
],
"parallel": false
},
"inputs": [
"production",
"^production",
"{workspaceRoot}/scripts/tsconfig.scripts.json",
"{workspaceRoot}/scripts/documentation/internal-link-checker.ts"
],
"outputs": ["{workspaceRoot}/dist/nx-dev/nx-dev"]
},
"sitemap": {

View File

@ -83,38 +83,6 @@ function readSiteMapLinks(filePath: string): string[] {
return sitemap.urlset.url.map((obj) => obj.loc);
}
/**
* This function checks if a link is for a private package.
* When link is for a private package, it is not included in the sitemap.
* However, some shared docs might be written for this private package during development.
* @param link e.g. /nx-api/vite/generators/configuration
* @returns true if the link is for a private package or NODE_ENV is not development, false otherwise.
*/
function checkLinkIsForPrivatePackage(link: string) {
// skip this check in dev mode
if (process.env.NODE_ENV === 'development') {
return false;
}
const pathSegments = link.split('/').filter(Boolean);
if (pathSegments[0] === 'nx-api') {
// TODO(v17): Remove this once vue is public or once this logic is fixed
if (pathSegments[1] === 'vue') {
return true;
}
const packageJsonPath = join(
workspaceRoot,
'packages',
pathSegments[1],
'package.json'
);
if (existsSync(packageJsonPath)) {
return readJSONSync(packageJsonPath).private ?? false;
}
}
return false;
}
// Main
const documentLinks = extractAllLinks(join(workspaceRoot, 'docs'));
const sitemapLinks = readSiteMapIndex(
@ -124,11 +92,7 @@ const sitemapLinks = readSiteMapIndex(
const errors: Array<{ file: string; link: string }> = [];
for (let file in documentLinks) {
for (let link of documentLinks[file]) {
// TODO(@isaacplmann): This ignores errors which are links TO private packages. It allows links FROM public packages (public docs) TO private packages (404 links)
if (
!sitemapLinks.includes(['https://nx.dev', link].join('')) &&
!checkLinkIsForPrivatePackage(link)
) {
if (!sitemapLinks.includes(['https://nx.dev', link].join(''))) {
errors.push({ file, link });
}
}