2015-10-20 87 views
2

我正嘗試在項目中使用d3-arrays。該模塊本身包含原始ES6模塊和UMD構建。我希望能夠直接將它作爲依賴項添加到我的ember-cli項目中並使其可用,但事實並非如此。無法將ES6 NPM模塊直接導入到Ember CLI中

我見過超過一年的建議說使用ember-browserify,其他人建議做墊片,但AFAIK這真的只會是理想的,如果它是一個涼亭的依賴,並且涼亭似乎是在路上出。

爲了正確,我怎樣才能將這個模塊導入,好像它是我的項目的一部分,並且將它作爲import {mean} from 'd3-arrays使用,而無需首先將其轉換爲另一個封裝格式?

我已經試過使墊片剛剛出口進口UMD代碼:

// index.js 
var d3ArraysExports = require('d3-arrays'); 
d3ArraysExports.name = 'd3-arrays-shim'; 
module.exports = d3ArraysExports; 

灰燼發現該模塊就好了,但它從來沒有被添加到要求的條目列表。

如果在Ember CLI中有一些設計決定爲什麼這樣做不起作用,請將它指向我。

+0

貴墊片啓用命名進口(如'進口{FOO}從「欄」'太命名進口是'燼-browserify'一個已知的警告,但與安裝,你可以嗎?只需從'npm:d3arrays''導入d3arrays並使用該方法(d3arrays.mean([1,2]))等。 –

+0

我遇到了同樣的問題。我想使用一些模塊d3.js就像d3-arrays,d3-scale等等。對於這個問題,首選解決方案是什麼?我需要爲它們創建一個shim lib嗎?請指導。 – NkS

回答

0

我想出了一個優雅的解決方案是:

我創建了從D3陣列進口ES6來源,並使它們可供花椰菜墊片庫。這裏有一個例子:

var path = require('path'); 

module.exports = { 
    name: 'd3-arrays', 

    treeForAddon: function() { 
    var packagePath = path.join(this.project.addonPackages['ember-d3-arrays-shim'].path, 'node_modules', 'd3-arrays'); 
    var d3ArraysTree = this.treeGenerator(packagePath); 
    return this._super.treeForAddon.call(this, d3ArraysTree); 
    } 
};