{"id":18293,"library":"ember-cli-build-config-editor","title":"Ember CLI Build Config Editor","description":"Utility for Ember blueprints to programmatically modify ember-cli-build.js. Current stable version 0.5.1. Maintained by srvance. Handles adding, editing, and querying flat configuration keys in the EmberApp build options. Uses JavaScript AST manipulation via esprima/ast-types. Alternative to manual string replacement or template-based approaches. Suitable for addon authors who need to inject or update build configuration during installation. Supports both Node.js CommonJS and usage within Ember CLI blueprints. Release cadence is irregular; latest release in 2019.","status":"maintenance","version":"0.5.1","language":"javascript","source_language":"en","source_url":"https://github.com/srvance/ember-cli-build-config-editor","tags":["javascript","ember-addon","ember-cli-blueprint"],"install":[{"cmd":"npm install ember-cli-build-config-editor","lang":"bash","label":"npm"},{"cmd":"yarn add ember-cli-build-config-editor","lang":"bash","label":"yarn"},{"cmd":"pnpm add ember-cli-build-config-editor","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"AST manipulation to parse and modify source code","package":"recast","optional":false},{"reason":"JavaScript parser used by recast for AST generation","package":"esprima","optional":false}],"imports":[{"note":"CommonJS only; no ES module wrapper. Must use require.","wrong":"import BuildConfigEditor from 'ember-cli-build-config-editor';","symbol":"BuildConfigEditor","correct":"const BuildConfigEditor = require('ember-cli-build-config-editor');"},{"note":"Importing with .js extension works but not required. The library does not export a default export.","wrong":"const BuildConfigEditor = require('ember-cli-build-config-editor.js').default;","symbol":"BuildConfigEditor","correct":"const BuildConfigEditor = require('ember-cli-build-config-editor.js');"},{"note":"Export is a single constructor function, not an object with BuildConfigEditor property.","wrong":"var BuildConfigEditor = require('ember-cli-build-config-editor').BuildConfigEditor;","symbol":"BuildConfigEditor","correct":"const BuildConfigEditor = require('ember-cli-build-config-editor');"}],"quickstart":{"code":"const BuildConfigEditor = require('ember-cli-build-config-editor');\nconst fs = require('fs');\n\n// Read the file as a string (not buffer)\nconst source = fs.readFileSync('./ember-cli-build.js', 'utf-8');\n\n// Create editor instance\nconst build = new BuildConfigEditor(source);\n\n// Add or update configuration for 'some-addon'\nbuild.edit('some-addon', {\n  booleanProperty: false,\n  numericProperty: 17,\n  stringProperty: 'wow'\n});\n\n// Write changes back\nfs.writeFileSync('./ember-cli-build.js', build.code());\n\n// Query existing config (returns parsed value or undefined)\nconst config = build.retrieve('some-addon');\nconsole.log(config);","lang":"javascript","description":"Shows how to read, edit, and write Ember CLI build config using CommonJS require and the editor API."},"warnings":[{"fix":"Specify encoding: fs.readFileSync('./ember-cli-build.js', 'utf-8')","message":"Constructor expects a string, not a Buffer. Passing fs.readFileSync result without encoding causes 'this.source.charCodeAt is not a function'.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Review config editing for addons; may require using addonConfig property instead of edit for addon-specific keys.","message":"Version 5.0 introduced support for Ember addon configuration, changing internal behavior for addon config edits.","severity":"breaking","affected_versions":">=5.0.0"},{"fix":"Use npm install --save-dev instead of ember install.","message":"Usage with ember install is discouraged as the package is not maintained actively; manual npm install recommended.","severity":"deprecated","affected_versions":">=0.2.0"},{"fix":"Ensure config keys are flat; use multiple edit calls for different top-level keys.","message":"Only handles flat configurations; nested object config may be incorrectly merged or overwritten.","severity":"gotcha","affected_versions":">=0.1.0"},{"fix":"Use require instead of import.","message":"Supports only CommonJS require; ES modules import will fail at runtime.","severity":"gotcha","affected_versions":">=0.1.0"}],"env_vars":null,"last_verified":"2026-04-25T00:00:00.000Z","next_check":"2026-07-24T00:00:00.000Z","problems":[{"fix":"fs.readFileSync('./ember-cli-build.js', 'utf-8')","cause":"Passed a Buffer instead of a string to the BuildConfigEditor constructor.","error":"TypeError: this.source.charCodeAt is not a function"},{"fix":"npm install ember-cli-build-config-editor --save-dev","cause":"Package not installed or require path incorrect.","error":"Cannot find module 'ember-cli-build-config-editor'"},{"fix":"Update to >=0.3.0 or check import: const BuildConfigEditor = require('ember-cli-build-config-editor');","cause":"Using an older version where edit method may not exist; or importing incorrectly.","error":"build.edit is not a function"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}