Use Yarn Workspaces to define complex project templates. Clone a template defined in a Yarn workspace and all its dependent packages.
Use npx or yarn create command for easy project creation. This will copy the repository and keep only the foo-bar package and all its dependencies.
npx @trampoline/workplate create appName https://github.com/user/repo --workspace foo-barIf you want to clone the whole repository, simply remove the --workspace parameter.
For more advanced options and usage, see npx @trampoline/workplate --help
- Clone the target repository.
- Get workspace dependencies of the target template.
- Remove unreferenced packages in the repository.
Let's say we have the following minimal repo structure:
repo-root
โฃ ๐ packages
โ โฃ ๐ package-a
โ โฃ ๐ package-b
โ โ ๐ package-c
โ ๐package.json
Let's also say that package-b depends on package-a. By running npx @trampoline/workplate create appName https://github.com/user/repo --workspace package-b, we will get a repo with the following structure:
repo-root
โฃ ๐ packages
โ โฃ ๐ package-a
โ โ ๐ package-b
โ ๐package.json
package-c is no longer there since it is not a dependency (direct or indirect) of package-b. package-a is still there since it is a dependency of package-b.
Your template repository should just be a normal repository, with Yarn Workspaces root package.json at the root of the repository.