[release] Update publishing scripts to make publishing allowlisted packages easier (#32486)

It's getting unwieldy to list every single package to skip in these
commands when you only want to publish one, ie
eslint-plugin-react-hooks.

This adds a new `onlyPackages` and `publishVersion` option to the
publish commands to make that easier.
This commit is contained in:
lauren
2025-02-27 11:24:30 -05:00
committed by GitHub
parent ebc22ef7e1
commit 2df9622477
4 changed files with 31 additions and 3 deletions

View File

@@ -13,6 +13,13 @@ const paramDefinitions = [
'Skip NPM and use the build already present in "build/node_modules".',
defaultValue: false,
},
{
name: 'onlyPackages',
type: String,
multiple: true,
description: 'Packages to include in publishing',
defaultValue: [],
},
{
name: 'skipPackages',
type: String,

View File

@@ -28,6 +28,9 @@ const run = async () => {
params.packages = await getPublicPackages(isExperimental);
params.packages = params.packages.filter(packageName => {
if (params.onlyPackages.length > 0) {
return params.onlyPackages.includes(packageName);
}
return !params.skipPackages.includes(packageName);
});

View File

@@ -19,6 +19,13 @@ const paramDefinitions = [
description: 'NPM tags to point to the new release.',
defaultValue: ['untagged'],
},
{
name: 'onlyPackages',
type: String,
multiple: true,
description: 'Packages to include in publishing',
defaultValue: [],
},
{
name: 'skipPackages',
type: String,
@@ -32,6 +39,11 @@ const paramDefinitions = [
description: 'Run in automated environment, without interactive prompts.',
defaultValue: false,
},
{
name: 'publishVersion',
type: String,
description: 'Version to publish',
},
];
module.exports = () => {

View File

@@ -23,14 +23,20 @@ const run = async () => {
try {
const params = parseParams();
const version = readJsonSync(
'./build/node_modules/react/package.json'
).version;
const version =
params.publishVersion ??
readJsonSync('./build/node_modules/react/package.json').version;
const isExperimental = version.includes('experimental');
params.cwd = join(__dirname, '..', '..');
params.packages = await getPublicPackages(isExperimental);
if (params.onlyPackages.length > 0) {
params.packages = params.packages.filter(packageName => {
return params.onlyPackages.includes(packageName);
});
}
// Pre-filter any skipped packages to simplify the following commands.
// As part of doing this we can also validate that none of the skipped packages were misspelled.
params.skipPackages.forEach(packageName => {