feat(core): throw error when official docusaurus dependencies use different versions (#9381)

Co-authored-by: sebastienlorber <lorber.sebastien@gmail.com>
This commit is contained in:
Jorens Merenjanu 2023-10-08 19:51:52 +03:00 committed by GitHub
parent dceaae41d7
commit 1319996083
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 8 additions and 30 deletions

View file

@ -1,15 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`loadSiteMetadata warns about plugin version mismatch 1`] = `
{
"docusaurusVersion": "<CURRENT_VERSION>",
"pluginVersions": {
"docusaurus-plugin-content-docs": {
"name": "@docusaurus/plugin-content-docs",
"type": "package",
"version": "1.0.0",
},
},
"siteVersion": "random-version",
}
`;

View file

@ -5,8 +5,8 @@
* LICENSE file in the root directory of this source tree.
*/
import {jest} from '@jest/globals';
import path from 'path';
import {DOCUSAURUS_VERSION} from '@docusaurus/utils';
import {getPluginVersion, loadSiteMetadata} from '../siteMetadata';
import type {LoadedPlugin} from '@docusaurus/types';
@ -37,10 +37,7 @@ describe('getPluginVersion', () => {
});
describe('loadSiteMetadata', () => {
it('warns about plugin version mismatch', async () => {
const consoleMock = jest
.spyOn(console, 'error')
.mockImplementation(() => {});
it('throws if plugin versions mismatch', async () => {
await expect(
loadSiteMetadata({
plugins: [
@ -55,11 +52,9 @@ describe('loadSiteMetadata', () => {
] as LoadedPlugin[],
siteDir: path.join(__dirname, '__fixtures__/siteMetadata'),
}),
).resolves.toMatchSnapshot();
expect(consoleMock.mock.calls[0]![0]).toMatchInlineSnapshot(`
"[ERROR] Invalid docusaurus-plugin-content-docs version 1.0.0.
All official @docusaurus/* packages should have the exact same version as @docusaurus/core (<CURRENT_VERSION>).
Maybe you want to check, or regenerate your yarn.lock or package-lock.json file?"
`);
).rejects
.toThrow(`Invalid name=docusaurus-plugin-content-docs version number=1.0.0.
All official @docusaurus/* packages should have the exact same version as @docusaurus/core (number=${DOCUSAURUS_VERSION}).
Maybe you want to check, or regenerate your yarn.lock or package-lock.json file?`);
});
});

View file

@ -7,7 +7,6 @@
import fs from 'fs-extra';
import path from 'path';
import logger from '@docusaurus/logger';
import {DOCUSAURUS_VERSION} from '@docusaurus/utils';
import type {
LoadedPlugin,
@ -82,10 +81,9 @@ function checkDocusaurusPackagesVersion(siteMetadata: SiteMetadata) {
versionInfo.version &&
versionInfo.version !== docusaurusVersion
) {
// Should we throw instead? It still could work with different versions
logger.error`Invalid name=${plugin} version number=${versionInfo.version}.
throw new Error(`Invalid name=${plugin} version number=${versionInfo.version}.
All official @docusaurus/* packages should have the exact same version as @docusaurus/core (number=${docusaurusVersion}).
Maybe you want to check, or regenerate your yarn.lock or package-lock.json file?`;
Maybe you want to check, or regenerate your yarn.lock or package-lock.json file?`);
}
},
);