mirror of
https://github.com/facebook/docusaurus.git
synced 2025-05-10 15:47:23 +02:00
chore(v2): ensure publishConfig.access presence with tests (#3786)
This commit is contained in:
parent
a4e0992b27
commit
04f307cf66
1 changed files with 53 additions and 11 deletions
|
@ -12,21 +12,63 @@ import fsCb from 'fs';
|
||||||
const glob = util.promisify(globCb);
|
const glob = util.promisify(globCb);
|
||||||
const readFile = util.promisify(fsCb.readFile);
|
const readFile = util.promisify(fsCb.readFile);
|
||||||
|
|
||||||
describe('packages', () => {
|
type PackageJsonFile = {
|
||||||
test('should contain repository and directory for every package', async () => {
|
file: string;
|
||||||
const allPackageJson = await glob('packages/*/package.json');
|
content: any;
|
||||||
expect(allPackageJson.length).toBeGreaterThan(0);
|
};
|
||||||
|
|
||||||
/* eslint-disable no-await-in-loop,no-restricted-syntax */
|
async function getPackagesJsonFiles(): Promise<PackageJsonFile[]> {
|
||||||
for (const packageJson of allPackageJson) {
|
const files = await glob('packages/*/package.json');
|
||||||
const content = JSON.parse(await readFile(packageJson, 'utf8'));
|
return Promise.all(
|
||||||
if (content.private !== true) {
|
files.map(async (file) => {
|
||||||
expect(content.repository).toEqual({
|
return {
|
||||||
|
file,
|
||||||
|
content: JSON.parse(await readFile(file, 'utf8')),
|
||||||
|
};
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
describe('packages', () => {
|
||||||
|
test('should be found', async () => {
|
||||||
|
const packageJsonFiles = await getPackagesJsonFiles();
|
||||||
|
expect(packageJsonFiles.length).toBeGreaterThan(0);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('should contain repository and directory for every package', async () => {
|
||||||
|
const packageJsonFiles = await getPackagesJsonFiles();
|
||||||
|
|
||||||
|
packageJsonFiles.forEach((packageJsonFile) => {
|
||||||
|
if (packageJsonFile.content.private !== true) {
|
||||||
|
expect(packageJsonFile.content.repository).toEqual({
|
||||||
type: 'git',
|
type: 'git',
|
||||||
url: 'https://github.com/facebook/docusaurus.git',
|
url: 'https://github.com/facebook/docusaurus.git',
|
||||||
directory: packageJson.replace(/\/package\.json$/, ''),
|
directory: packageJsonFile.file.replace(/\/package\.json$/, ''),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
/*
|
||||||
|
If a package starts with @, if won't be published to public npm registry
|
||||||
|
without an additional publishConfig.acces: "public" config
|
||||||
|
This will make you publish an incomplete list of Docusaurus packages
|
||||||
|
when trying to release with lerna-publish
|
||||||
|
*/
|
||||||
|
test('should have publishConfig.access: "public" when name starts with @', async () => {
|
||||||
|
const packageJsonFiles = await getPackagesJsonFiles();
|
||||||
|
|
||||||
|
packageJsonFiles.forEach((packageJsonFile) => {
|
||||||
|
if (packageJsonFile.content.name.startsWith('@')) {
|
||||||
|
// Unfortunately jest custom message do not exist in loops, so using an exception instead to show failing package file
|
||||||
|
// (see https://github.com/facebook/jest/issues/3293)
|
||||||
|
// expect(packageJsonFile.content.publishConfig?.access).toEqual('public');
|
||||||
|
if (packageJsonFile.content.publishConfig?.access !== 'public') {
|
||||||
|
throw new Error(
|
||||||
|
`Package ${packageJsonFile.file} does not have publishConfig.access: 'public'`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue