비즈니스 문제 : 일련의 Ember 응용 프로그램의 경우 소프트웨어의 흰색/회색 레이블링을 지원하기 위해 CMS에서 색상, 로고 및 특정 내용을 제어 할 수 있습니다.Ember CLI 사용자 정의 CMS 설정으로 빌드
제안 된 솔루션 : 빌드시에 적절한 스타일 시트 규칙, 로고 URL 등을 가져 와서 해당 트리에 내용을 주입하는 Ember CLI 애드온이 생성됩니다. 부가 기능에 대한
초기 구현 :
// index.js
/* jshint node: true */
'use strict';
const BroccoliMergeTrees = require('broccoli-merge-trees');
const broccoliSource = require('broccoli-source');
const UnwatchedDir = broccoliSource.UnwatchedDir;
const apiFactory = require('./lib/cms-integration-addon/api.js');
const writeFile = require('write');
module.exports = {
name: 'cms-integration-addon',
cmsIntegrationConfig: {},
isDevelopingAddon() {
return true;
},
included(app) {
const config = app.project.config(app.env)['cms-integration'] || {};
this.cmsIntegrationConfig = config;
},
treeForAddon() {
let tree = this._super.treeForAddon.apply(this, arguments);
const cmsDetailsSource = new UnwatchedDir(this.app.project.root + '/tmp/cms-integration-addon');
tree = new BroccoliMergeTrees([tree, cmsDetailsSource]);
return tree;
},
preBuild() {
const cms = apiFactory(this.cmsIntegrationConfig);
return cms.fetchSettings().then((settings) => {
const configPath = `${this.app.project.root}/tmp/cms-integration-addon/config/my-config.js`;
return writeFile(configPath, `export default ${JSON.stringify(settings)}`);
});
}
};
문제는 내가 기대하는 것처럼이 코드를 사용하여 CMS에서 적절한 JSON 객체가 cms-integration-addon
모듈에서 vendor.js
에 삽입되지 않는다는 것입니다. 그러나 일 경우 treeForAddon
에서 treeForApp
으로 변경하면 설정 개체가 앱 모듈 아래 app-name.js
에 삽입됩니다. 이상적인 것은 아니며이 코드를 애드온 모듈에 삽입하면 더 좋습니다.
내 JSON 개체를 애드온 모듈에 삽입하려면 무엇이 누락 되었습니까?