Ember-cli プロジェクトで ES6 ライブラリを使用する 質問する

Ember-cli プロジェクトで ES6 ライブラリを使用する 質問する

Ember-Cli を使用する小さな EmberJS アプリケーションがあります。このアプリケーションには、bower 依存関係にあるプライベート ES6 ライブラリがあります。基本的に、ライブラリをインポートして、どこでも使用したいと考えています。

間違っていなければ、ライブラリをトランスパイルしてbrocfile.js、後で使用する必要があります。残念ながら、具体的な情報はあまり提供できませんが、できるだけ明確に説明できるよう最善を尽くします。

私の外部ライブラリの名前main-libと構造は次のとおりです (別のプロジェクトで動作しています)。

  • バウアーコンポーネント
    • メインライブラリ
      • api.js
      • メイン.js
      • メッセージ.js

main.js ファイルには次の内容が含まれています。

import Api from 'main/api';
import Message from 'main/message';

var main = {};

main.api = Api;
main.message = Message;

export default main;

つまり、私がやりたいのは、アプリケーションで、mainそれに含まれるさまざまな関数をインポートして使用することです。

たとえば、ある emberjs コントローラーの場合:

import Main from 'main';

//use Main here

そのために、私はbrocfile.jsで次のことをすることを考えました。

var tree = 'bower_components/main-lib';
var ES6Modules = require('broccoli-es6modules');
var amdFiles = new ES6Modules(tree, {
  format: 'amd',
  bundleOptions: {
    entry: 'main.js',
    name: 'mainLib'
  }
});

ただし、これは何もしません。基本的に、トランスパイルされたファイルを、ライブラリをインポートして使用できる場所に含めるvendor.jsか、ライブラリを使用できる場所に置く必要があります。

何かが欠けているのですが、それが何なのか特定できません。

編集1:brocfile.js の最後に次の行を追加します。

mergeTrees = require('broccoli-merge-trees')

module.exports = mergeTrees([app.toTree(), amdFiles]);

次のような ES5 を取得できます。

define(['main/api', 'main/message'], function(api, message) {

    var main = {};

    main.api = Api;
    main.message = Message;

    var _main = main;
    return _main;
});

問題は、インポートもされないことですmain/apimain/message必要なファイルごとにコードを繰り返す必要がありますか?

また、ファイルは連結されずvendor.js、単純にルートにあります。/dist

ベストアンサー1

次のものがあります: - ただし、説明されているimport Api from 'main/api'フォルダーは表示されません- フォルダーは...のみです。mainmain-lib

main/apimain/messageは実際には存在しないため、含まれていないのでしょうか?ファイル内でmain-lib/apiと を使用する必要があるかもしれません。main-lib/messagemain.js

おすすめ記事