Codegen & Commands
Ember-cli's blueprints and command features are incredibly powerful, and are tremendously under-utilized in the ember community. In this unit, we'll explore:
- How apps (and addons contained therein) can extend ember-cli
- How arguments passed to ember-cli on the command line make it into your blueprint or command
- Testing on the node.js side
Codegen & CommandsAdding Commands
Like many modern tools, much of the amazing stuff we appreciate about ember-cli comes from the ability to extend it by way of libraries. We've already looked at how this can be done with broccoli plugins, but we can also change ember-cli's code generation features, and even add brand new commands!
We'll first look at an addon that adds new commands to ember-cli, and discuss positional and named options, default values, and automatic
Codegen & CommandsEXERCISE: A new command
Add a new command to ember-cli, to broadcast a slack message to a particular channel.
Codegen & CommandsBeautiful Blueprints
We can build our own blueprints for dynamic code generation, and study how options and
localsturn our parameterized code templates into code. This underutilized and under-appreciated ember-cli feature has the potential to save you and your team loads of time, and to reduce accidental inconsistencies as well!
Codegen & CommandsEXERCISE: Computed property macro blueprint
Build a blueprint that makes a new computed property in the
app/cpfolder of your app, using command line arguments to dynamically specify local names (and number) of arguments passed to the macro.
Codegen & CommandsTesting Commands and Blueprints
One of the challenges around building ember addons that are more tool oriented than client-side oriented, is that the existing testing stories that we rely on for our ember app's code won't help us much. We'll outline some strategies for asserting that your blueprints and commands do the things they're supposed to do, and ensure that these tests (in addition to testing your browser-based code) are part of what's run in your CI pipeline.
Codegen & CommandsWrap Up & Goodbye
We'll recap the things we've learned today, and discuss resources for continued research and practice.