Ember CLI Build Config Editor
Utility for ember blueprints to use to modify ember-cli-build.js
Installation for Use
For installation in a non-Ember project:
npm install ember-cli-build-config-editor --save-dev
For installation in an Ember project:
ember install ember-cli-build-config-editor
Usage
Note: This package only handles flat configurations at this point.
Querying configuration
var BuildConfigEditor = ;var fs = ; // Specify 'utf-8' to force it to be a string instead of a buffervar source = fs; var build = source; var config = build; // Do something with the config
Adding or editing configuration
Use this from your Ember blueprint to add or update configuration options in your ember-cli-build.js
.
var BuildConfigEditor = ;var fs = ; // Specify 'utf-8' to force it to be a string instead of a buffervar source = fs; var build = source; build; fs;
What It Does
The above example modifies ember-cli-build.js
in the following ways
- Finds the
'some-addon'
key in the options object of yourEmberApp
construction, creating one if it doesn't exist - For each of the entries in the passed object, it adds property or updates it if it already exists with the specified value.
Keys that are not specified are preserved untouched. Added object keys are single-quoted for safety.
Troubleshooting
TypeError: this.source.charCodeAt is not a function
You have passed a buffer instead of a string to the constructor. Add the encoding
argument
when you read the file, e.g., var source = fs.readFileSync('./ember-cli-build.js', 'utf-8')
.
Development
Installation for Development
- Fork and clone the repo
- cd into the project directory
npm install
Running tests
npm test
Understanding JavaScript ASTs
The AST for the basic configuration can be found in this SVG for reference. It was generated from Rappid's JavaScript AST Visualizer.
The approach used here is based on that for ember-router-generator.
The DSL for AST types used by esprima provided great insight once I got my head around it.
Contributing
Please fork the project and submit pull requests and issues using GitHub.