2014-06-16 5 views
0

Когда я запустил ember build, плагин брокколи работает правильно, и выводит файл CSS спрайта и спрайт PNG-файла в каталог ресурсов.Как добавить плагин брокколи в приложение ember-cli с живой перезагрузкой?

Когда я запустил ember serve, то же самое происходит и изначально. Однако, когда я сохраняю какой-либо файл, заставляя Broccoli перестраивать его дерево, , CSS-файлы спрайта и PNG больше не объединяются в основное дерево приложений, , а когда страница обновляется после перезагрузки, страница больше не отображает спринтер изображений.

  • Почему это происходит?
  • Как я могу гарантировать, что выходы из моего плагина объединяются каждый раз?

Детали:

Задав this question, и не получая никаких ответов, несмотря на ввод баунти на него, я решил написать свой собственный брокколи плагин для CSS генерации изображений спрайтов: broccoli-sprite

Что я пробовал до сих пор:

# 1

Я сливая вывод из моего плагина с этим основного приложения, используя это в Brocfile.js

var app = new EmberApp(/* ... */); 
    /* other ember-cli init for app */ 
    var broccoliSprite = require('broccoli-sprite'); 
    var spritesTree = broccoliSprite(/* ... */); 
    var appTree = app.toTree(); 
    var broccoliMergeTrees = require('broccoli-merge-trees'); 
    module.exports = broccoliMergeTrees([spritesTree, appTree]); 

Я понимаю, что это не может быть путь, и я я довольно новичок и для ember-cli, и для брокколи, поэтому прошу прощения за новичку, если это одно.

# 2

В Brocfile.js, расширить EmberApp включить новое дерево для sprites:

var EmberApp = require('ember-cli/lib/broccoli/ember-app'); 
var broccoliSprite = require('broccoli-sprite'); 

EmberApp.prototype.sprites = function() { 
    console.log('EmberApp.prototype.sprites'); 
    var spritesTree = broccoliSprite('public', this.options.sprite); 
    return spritesTree; 
}; 
var originalEmberAppToArray = EmberApp.prototype.toArray; 
EmberApp.prototype.toArray = function() { 
    var sourceTrees = originalEmberAppToArray.apply(this, arguments); 
    sourceTrees.push(this.sprites()); 
    return sourceTrees; 
}; 

ответ

1

Следующий выпуск Эмбер CLI будет иметь поддержку первого класса для надстроек. Спасибо Роберту Джексону.

Посмотрите на https://github.com/rjackson/ember-cli-esnext, чтобы получить представление о том, как упаковать брокколи-спрайт для Ember CLI.

Я с нетерпением жду, чтобы использовать его в будущих приложениях :)

+0

Спасибо за указание на это Джейми, он должен прийти в handy.Would вы не знаете много о том, почему 2-й и последующие пробеги плагина ведут себя по-разному от первый забег? – bguiz

+0

Я не эксперт, но я думаю, он может работать на поддереве? –

+0

Я бы попросил хороших людей в #broccolijs на freenode –