Scaffolding for highly optimized applications built with Ember.js
engage
is a tool for scaffolding Monorepo projects using pnpm Workspaces, Lerna, Release It, and Typescript.
It's built for the future of Ember, focusing on configuring your project to maximize your success.
Monorepos solve problems almost every ember project hits with testing, modularization, and code re-use.
You don't need to put all of your code into one mono-repo, but often you'll find that more things make sense when maintained together.
Even projects with just one app or addon will find value in this structure as they scale.
In addition to a new project structure, engage
provides an enhanced "out-of-the-box" experience for app development, helping to ensure you ship the most powerful but lightweight and performant application possible, to whatever platforms you target.
Some of the defaults it provides:
- Typescript
- Optimized builds with embroider
- SSR via fastboot
ServiceWorker by defaultember-service-worker is not compatible with embroider, we are working on a new service-worker solution for ember apps.- Advanced terser configuration
- Optimizations for SVGs, Templates, Translations
- Automated Releases for both Public and Private Packages
Installing the package globally will add the command engage
to your terminal.
pnpm add -g @warp-drive/engage
Once installed, run engage --help
to see detailed usage information.
1. Create a new Project
engage project <projectName> --githubUrl git@github.com:<orgName>/<repoName>.git
Why --githubUrl
?
This allows
engage
to configure the project labels, packages, and various scripts correctly. In the future, we'll add a way to skip this for folks not using github or who are scaffolding while offline.
Then switch into the new directory and start working!
cd <directory-name>
2. Add Applications, Addons and More to your project
From inside your project, run any of the following commands to scaffold a package in the project monorepo.
engage app <appName> -d <directoryName>
engage addon <addonName> -d <directoryName>
engage v1-addon <addonName> -d <directoryName>
engage engine <engineName> -d <directoryName>
For the full list of things that can be scaffolded, run engage --help
.
Using these scaffolds requires a global ember-cli install.
We recommend installing and managing node and ember-cli via volta.
These scaffolds configure node usage in each package via volta.
Install volta if required, then use volta to install ember-cli.
volta install ember-cli
Brought to you with