0

私はブロッコリーにかなり慣れていないので、ember.js で使用する簡単なプラグインを作成しようとしています。broccoli-caching-writer の github ページで説明されているように、index.js で broccoli-caching-writer を使用しました。

var CachingWriter = require('broccoli-caching-writer');


module.exports = CachingWriter.extend({
    init: function(inputTrees, options)
    {   
        console.log('Initializing plugin with tree');
        console.log(inputTrees);
        console.log(options);
        this.inputTrees = inputTrees;

    },
    updateCache: function(srcPaths, destDir) {
        console.log('updateCache called with srcPaths and destDir');
        console.log(srcPaths);
        console.log(destDir);
    }
});

次に、プラグインを ember アプリ (ember CLI を使用) にインポートし、.brocfile で次のように構成しました。

var plugin = require('broccoli-my-plugin');
var merge = require('broccoli-merge-trees');

pluginTree = new svgSpriter(['images'], {some: 'options'});
....
....
module.exports = merge([app.toTree(),pluginTree]);

上記を ember build コマンドで実行すると、次の出力が得られます (プライバシー上の理由からパスを編集しています)。

    Build failed.
Cannot read property 'images/.DS_Store' of undefined
TypeError: Cannot read property 'images/.DS_Store' of undefined
    at CoreObject.proto.shouldBeIgnored (/node_modules/broccoli-svg-sprite/node_modules/broccoli-caching-writer/index.js:135:33)
    at CoreObject.proto.keyForTree (/node_modules/broccoli-svg-sprite/node_modules/broccoli-caching-writer/index.js:277:14)
    at CoreObject.<anonymous> (/node_modules/broccoli-caching-writer/index.js:267:21)
    at Array.map (native)
    at CoreObject.proto.keyForTree (/node_modules/broccoli-caching-writer/index.js:266:24)
    at /node_modules/broccoli-caching-writer/index.js:87:20
    at lib$rsvp$$internal$$tryCatch (/node_modules/broccoli-svg-sprite/node_modules/broccoli-caching-writer/node_modules/rsvp/dist/rsvp.js:489:16)
    at lib$rsvp$$internal$$invokeCallback (/node_modules/broccoli-svg-sprite/node_modules/broccoli-caching-writer/node_modules/rsvp/dist/rsvp.js:501:17)
    at lib$rsvp$$internal$$publish (/node_modules/broccoli-svg-sprite/node_modules/broccoli-caching-writer/node_modules/rsvp/dist/rsvp.js:472:11)
    at lib$rsvp$asap$$flush (/node_modules/broccoli-caching-writer/node_modules/rsvp/dist/rsvp.js:1290:9)

プラグインがパスを無視するかどうかをチェックしようとしているようですが、キャッシング ライターに渡されるオプションに filterfromcache オプションが定義されていないため、上記は機能するはずですか? 何か不足しているかどうかわかりませんか?

どんな助けでも大歓迎です。

4

1 に答える 1

0

さて、私のような初心者のために、init メソッドをオーバーライドする例を少し更新する必要があると思います。親モジュールの init メソッドが呼び出されていないことがわかりました。私のinitメソッドに以下を追加すると修正されました:

      CachingWriter.prototype.init.call(this, inputTrees, options);

ただし、より良い方法があるかどうかはわかりません。

于 2015-06-11T20:00:30.073 に答える