ああ、実際にこれについて明確に考えた後、すべてが前の例で期待したとおりに実際に機能しています。
私は明らかに十分な注意を払っていませんでした。app.toTree()
すべてがすでに構築および連結されているため、この操作を実行するには遅すぎます。
幸いなことに、ember-cli を使用すると、アドオンはライフサイクルのさまざまなマイルストーンで適切なツリーを変更できます。
現在利用可能なフックの詳細については、https : //github.com/ember-cli/ember-cli/blob/master/ADDON_HOOKS.md を参照してください。
トリックを行うフックはAddon.prototype.postprocessTree
. 2 つの選択肢があります。スタンドアロンのアドオンをビルドするember addon
か、軽量のレポ内アドオンを作成できますember g in-repo-addon
。通常、このような状況では、2 番目のプロジェクトを必要としないため、リポジトリ内アドオンを好みますが、それ以外は同じです。
- ember g in-repo-addon remove
- 経由でブロッコリーシチューをインストールする必要があります
npm install --save broccoli-stew
- それを含めます
var stew = require('broccoli-stew')
。
- アドオンにフック postprocessTree を追加します
- postprocessTree が重要なタイプの場合は、broccoli-stew を使用して、重要でなくなったディレクトリを削除します。
結果のプル リクエスト: https://github.com/WooDzu/ember-exclude-pod/pull/1
注:template
後処理で利用可能なタイプの 1 つではなかったことに気付いたので、追加しました: https://github.com/ember-cli/ember-cli/pull/4263 (次の ember-cli リリースの一部になるはずです) )
Addon.prototype.preprocessTree
注:ビルドする前にファイルを無視するため、追加のフックが本当に必要です
。関連する問題を開きました:
https://github.com/ember-cli/ember-cli/issues/4262
上記のステップの出力
var stew = require('broccoli-stew');
module.exports = {
name: 'remove',
isDevelopingAddon: function() {
return true;
},
postprocessTree: function(type, tree){
if (type === 'js' || type === 'template') {
return stew.rm(tree, '*/modules/pod{1,2}/**/*');
} else {
return tree;
}
}
};