The current GitHub linting workflow (which, thanks to its reliance on lerna, only runs lint in workspaces that specify a `lint` command--needs to be fixed) has been failing for a new reason since commit dd9510537c9857a9f41c155c933b893c5855d32d (the workflow was already failing in the `develop` branch for unrelated reasons).
dd9510537c9857a9f41c155c933b893c5855d32d reintroduced Babel to the monorepo, not for any kind of transpilation step but for usage by `eslint`. This wasn't an issue for `eslint` commands executed from the monorepo root, but it's an issue for the lint workflow: that workflow uses `lerna run lint` to run `eslint` from within workspace directories, and the workspace directories that implement `lint` commands also happen to have legacy `.babelrc` files that reference no-longer-installed Babel plugins.
This commit removes the old `.babelrc` files, which should fix the lint workflow in its current form. (I will soon be updating the lint workflow to cover all workspaces, but I've yet to decide what that will look like.)
As reported in #2605 there's a broken link in the README's that points
to an old overview of all published packages on freesewing.dev.
Since we migrated to NextJS that page no longer exists, futhermore we've
moved away from the single `packages` workspace and now have one for
`packages`, `designs`, `plugins`, and `sites`. So I've just dropped the
link and rephrased the sentence.
These are some changes in the way the monorepo is structured,
that are aimed at making it easier to get started.
There are two important changes:
**Multiple workspaces**
We had a yarn workspaces setup at `packages/*`. But our monorepo has
grown to 92 packages which can be overwhelming for people not familiar
with the package names.
To remedy this, I've split it into 4 different workspaces:
- `designs/*`: Holds FreeSewing designs (think patterns)
- `plugins/*`: Holds FreeSewing plugins
- `packages/*`: Holds other packages published on NPM
- `sites/*`: Holds software that is not published as an NPM package,
such as our various websites and backend API
This should make it easier to find things, and to answer questions like
*where do I find the code for the plugins*.
**Updated reconfigure script to handle build order**
One problem when bootstrapping the repo is inter-dependencies between
packages. For example, building a pattern will only work once
`plugin-bundle` is built. Which will only work once all plugins in the
bundle or built. And that will only work when `core` is built, and so
on.
This can be frustrating for new users as `yarn buildall` will fail.
And it gets overlooked by seasoned devs because they're likely to have
every package built in their repo so this issue doesn't concern them.
To remedy this, we now have a `config/build-order.mjs` file and the
updated `/scripts/reconfigure.mjs` script will enforce the build order
so that things *just work*.