diff --git a/.changeset/afraid-ways-buy.md b/.changeset/afraid-ways-buy.md new file mode 100644 index 000000000..c9715e462 --- /dev/null +++ b/.changeset/afraid-ways-buy.md @@ -0,0 +1,5 @@ +--- +"@changesets/cli": patch +--- + +Add error message when running changesets in a repo with workspaces configured but no packages yet diff --git a/packages/cli/src/commands/add/index.ts b/packages/cli/src/commands/add/index.ts index 9352aa483..2112c82c3 100644 --- a/packages/cli/src/commands/add/index.ts +++ b/packages/cli/src/commands/add/index.ts @@ -20,7 +20,13 @@ export default async function add( { empty, open }: { empty?: boolean; open?: boolean }, config: Config ) { - const packages = (await getPackages(cwd)).packages.filter((pkg) => + const packages = await getPackages(cwd); + if (packages.packages.length === 0) { + throw new Error( + `No packages found. You might have ${packages.tool} workspaces configured but no packages yet?` + ); + } + const listablePackages = packages.packages.filter((pkg) => isListablePackage(config, pkg.packageJson) ); const changesetBase = path.resolve(cwd, ".changeset"); @@ -41,8 +47,8 @@ export default async function add( .filter((pkg) => isListablePackage(config, pkg.packageJson)) .map((pkg) => pkg.packageJson.name); - newChangeset = await createChangeset(changedPackagesName, packages); - printConfirmationMessage(newChangeset, packages.length > 1); + newChangeset = await createChangeset(changedPackagesName, listablePackages); + printConfirmationMessage(newChangeset, listablePackages.length > 1); if (!newChangeset.confirmed) { newChangeset = {