Skip to content

Commit

Permalink
feat(nxdev): redirects to send legacy tutorial links to new locations (
Browse files Browse the repository at this point in the history
  • Loading branch information
ZackDeRose committed Oct 24, 2022
1 parent f4288e6 commit 8fcc2b4
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 2 deletions.
13 changes: 11 additions & 2 deletions nx-dev/nx-dev/next.config.js
Expand Up @@ -44,8 +44,8 @@ module.exports = withNx({

// Tutorials
rules.push({
source: '/(l|latest)/(r|react)/tutorial/01-create-application',
destination: '/react-tutorial/01-create-application',
source: '/(l|latest)/(r|react)/tutorial/1-code-generation',
destination: '/react-tutorial/1-code-generation',
permanent: true,
});
rules.push({
Expand All @@ -58,6 +58,15 @@ module.exports = withNx({
destination: '/node-tutorial/1-code-generation',
permanent: true,
});
for (const [source, destination] of Object.entries(
redirectRules.tutorialRedirects
)) {
rules.push({
source,
destination,
permanent: true,
});
}

// Storybook
rules.push({
Expand Down
43 changes: 43 additions & 0 deletions nx-dev/nx-dev/redirect-rules.config.js
Expand Up @@ -321,6 +321,48 @@ const recipesUrls = {
'/recipe/adding-to-monorepo': '/recipes/adopting-nx/adding-to-monorepo',
};

/**
* Tutorial Updates
*/
const oldReactTutorialPaths = [
'/react-tutorial/01-create-application',
'/react-tutorial/02-add-e2e-test',
'/react-tutorial/03-display-todos',
'/react-tutorial/04-connect-to-api',
'/react-tutorial/05-add-node-app',
'/react-tutorial/06-proxy',
'/react-tutorial/07-share-code',
'/react-tutorial/08-create-libs',
'/react-tutorial/09-dep-graph',
'/react-tutorial/10-computation-caching',
'/react-tutorial/11-test-affected-projects',
'/react-tutorial/12-summary',
];
const reactRedirectDestination = '/react-tutorial/1-code-generation';
const reactTutorialRedirects = oldReactTutorialPaths.reduce((acc, path) => {
acc[path] = reactRedirectDestination;
return acc;
}, {});
const oldNodeTutorialPaths = [
'/node-tutorial/01-create-application',
'/node-tutorial/02-display-todos',
'/node-tutorial/03-share-code',
'/node-tutorial/04-create-libs',
'/node-tutorial/05-dep-graph',
'/node-tutorial/06-computation-caching',
'/node-tutorial/07-test-affected-projects',
'/node-tutorial/08-summary',
];
const nodeRedirectDestination = '/node-tutorial/1-code-generation';
const nodeTutorialRedirects = oldNodeTutorialPaths.reduce((acc, path) => {
acc[path] = nodeRedirectDestination;
return acc;
}, {});
const tutorialRedirects = Object.assign(
reactTutorialRedirects,
nodeTutorialRedirects
);

/**
* Public export API
*/
Expand All @@ -331,4 +373,5 @@ module.exports = {
overviewUrls,
recipesUrls,
schemaUrls,
tutorialRedirects,
};
45 changes: 45 additions & 0 deletions nx-dev/nx-dev/redirect-rules.config.spec.js
Expand Up @@ -9,11 +9,56 @@ describe('Redirect rules configuration', () => {
...redirectRules.guideUrls,
...redirectRules.overviewUrls,
...redirectRules.schemaUrls,
...redirectRules.tutorialRedirects,
};

for (let k of Object.keys(rules)) {
expect(k).not.toEqual(rules[k]);
}
});
});

describe('Tutorial redirects', () => {
test('old react tutorial links', () => {
const oldReactUrls = [
'/react-tutorial/01-create-application',
'/react-tutorial/02-add-e2e-test',
'/react-tutorial/03-display-todos',
'/react-tutorial/04-connect-to-api',
'/react-tutorial/05-add-node-app',
'/react-tutorial/06-proxy',
'/react-tutorial/07-share-code',
'/react-tutorial/08-create-libs',
'/react-tutorial/09-dep-graph',
'/react-tutorial/10-computation-caching',
'/react-tutorial/11-test-affected-projects',
'/react-tutorial/12-summary',
];

for (const url of oldReactUrls) {
expect(redirectRules.tutorialRedirects[url]).toEqual(
'/react-tutorial/1-code-generation'
);
}
});

test('old node tutorial links', () => {
const oldNodeTutorialPaths = [
'/node-tutorial/01-create-application',
'/node-tutorial/02-display-todos',
'/node-tutorial/03-share-code',
'/node-tutorial/04-create-libs',
'/node-tutorial/05-dep-graph',
'/node-tutorial/06-computation-caching',
'/node-tutorial/07-test-affected-projects',
'/node-tutorial/08-summary',
];

for (const url of oldNodeTutorialPaths) {
expect(redirectRules.tutorialRedirects[url]).toEqual(
'/node-tutorial/1-code-generation'
);
}
});
});
});

0 comments on commit 8fcc2b4

Please sign in to comment.