2
0
mirror of https://github.com/iconify/iconify.git synced 2024-12-13 14:13:06 +00:00
iconify/monorepo
2022-01-29 19:54:21 +02:00
..
src Custom options for run command in monorepo manager 2022-01-29 19:54:21 +02:00
.gitignore Remove Lerna, use custom script instead 2022-01-27 21:16:43 +02:00
index.js Fix executing NPM on Windows 2022-01-28 12:24:48 +02:00
package-lock.json Remove Lerna, use custom script instead 2022-01-27 21:16:43 +02:00
package.json Reorganize monorepo helpers, support multiple actions 2022-01-28 11:24:29 +02:00
README.md Custom options for run command in monorepo manager 2022-01-29 19:54:21 +02:00
tsconfig.json Remove Lerna, use custom script instead 2022-01-27 21:16:43 +02:00

Monorepo

This package was created to manage Iconify monorepo.

Iconify monorepo used to be managed by Lerna. Unfortunately, Lerna has been abandoned and has a lot of issues. One of those issues is inability to create symblic links for local packages that depend on other local packages, which makes it unusable for monorepos like Iconify.

What does it do?

This is a simple script to manage multiple packages, placed in the same monorepo.

Main feature is symbolic links. It creates links between all local packages, so when you can work on multiple packages at the same time.

Unlike Lerna, currently this sctipt is very basic: it does not check dependencies, does not check versions, does not mess with package.json.

Requirements

Script requires NPM. It was not designed to work with other package managers yet.

Config file

This script uses lerna.json, where the only property that matters is packages.

Order of packages in packages property affects execution order, so if execution order (such as build order) matters, list most important packages first. Basic wildcards are supported, such as packages/*.

Script creates symbolic links for all local packages, except:

  • Packages with private set to true.
  • Packages without version number (assumed to be private).

Commands

  • install: runs npm install for all packages, then creates symbolic links.
  • link: creates symbolic links (can be used to fix links after messing with packages).
  • unlink: removes local symbolic links.
  • clean: removes node_modules in all packages.
  • run <command>: runs command specified in next parameter (also run-script <command>).

Options

Options for all commands:

  • --if-present will check if command is present before running it, used for run command.
  • --public will execute command for public packages.
  • --private will execute command only for private packages.
  • --silent will execute command silently.
  • --workspace <workspace> or -w=<workspace> filters by workspace directory, such as -w=packages/core. You can use this option several times to specify multiple workspaces.
  • --package <package> or -p=<package> filter by package name, such as -p=@iconify/core. You can use this option several times to specify multiple packages.

You can add custom parameters for run or run-script commands by listing them after -- argument: run <command> -- <param1> <param2>. Everything after -- argument is treated as parameters for run command, so you need to specify other options before it.