Utility for ember blueprints to use to modify ember-cli-build.js
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
Note: This package only handles flat configurations at this point.
var BuildConfigEditor = require('ember-cli-build-config-editor.js');
var fs = require('fs');
// Specify 'utf-8' to force it to be a string instead of a buffer
var source = fs.readFileSync('./ember-cli-build.js', 'utf-8');
var build = new BuildConfigEditor(source);
var config = build.retrieve('some-addon');
// Do something with the config
Use this from your Ember blueprint to add or update configuration options in your ember-cli-build.js
.
var BuildConfigEditor = require('ember-cli-build-config-editor.js');
var fs = require('fs');
// Specify 'utf-8' to force it to be a string instead of a buffer
var source = fs.readFileSync('./ember-cli-build.js', 'utf-8');
var build = new BuildConfigEditor(source);
build.edit('some-addon', {
booleanProperty: false,
numericProperty: 17,
stringProperty: 'wow'
});
fs.writeFileSync('./ember-cli-build.js', build.code());
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.
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')
.
- Fork and clone the repo
- cd into the project directory
npm install
npm test
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.
Please fork the project and submit pull requests and issues using GitHub.