2017-06-20 5 views
1

ember g <blueprint> <modelname>コマンドに渡されたEmberデータモデルに基づいて異なるコンポーネントフィールドを出力するEmberカスタムブループリントを作成しています。Blueprintの使用中にEmberモデルファイルを解析する

しかし、モデルファイルをJavascriptとして解析しようとするのは難しいです。その理由は、CommonJS Node環境でES6モジュールをインポートしようとしているからです。 npmからインポートされたES6解析ライブラリを使用しても、モデルのインポートパスのルックアップをこのコンテキストから解決することはできません。

次の方法は、生成されたJavascriptファイルをdistフォルダ(たとえばdist/my-first-blueprint.js)にインポートすることです。これはモジュール用のAMD構造であり、容易に入手可能なAMD npmモジュールのどれも、このファイルを簡単に消費することはできません。

dist/vendor.jsにコードが追加されているため、Ember Resolverが正しく参照されているモジュールを見つけることができます。しかし、これは私のブロッコリー構築チェーンとEmber内部の知識が私にはうまくいかないところです。

最後のオプションは、Javascriptファイルをパターンマッチングを使用してテキストとして解析することです。ミックスイン、異なるルートクラスおよびその他の分散の組み合わせにより、これは間違いなく重要ではなく、別個の青写真に引き渡されたものです。

青写真のindex.jsファイル内でどのようにアイデアやヒントを知っている人がいますか?Ember Dataモデルをインポートしてその属性を特定できますか?

答えて

1

recastを使用すると、astツリーを解析できます。

var fs = require('fs-extra'); 
var fileName = <path-to-model> ; 
var source = fs.readFileSync(fileName, 'utf-8'); 
var recast = require('recast'); 
var ast = recast.parse(source); 

このコードはファイルを解析できます。あなたが天文学を取得した後、それを通ってモデルの属性を得る。 ast traversal apiを使用できます。

+0

ありがとうございます。私はこれを試してみるのに時間を投資する必要がある。それは間違いなく潜在的可能性を秘めていますが、正に、私が探していた「オブジェクトのモデルへの定義を得る」という答えではありませんでした。しかしそれは実現可能ではないかもしれません。 – JonRed

関連する問題