繁体   English   中英

无法将ES6 NPM模块直接导入到Ember CLI中

[英]Cannot import ES6 NPM module directly in to Ember CLI

我正在尝试在项目中使用d3数组 该模块本身包括原始ES6模块和UMD构建。 我希望能够将其直接添加为我的ember-cli项目的依赖项并使其可用,但是事实并非如此。

我已经看到有超过一年的老建议说使用ember-browserify ,还有其他建议做一个垫片,但AFAIK仅在有Bower依赖的情况下才是理想的选择,并且Bower似乎正在淘汰。

为了正确起见,我如何才能像import {mean} from 'd3-arrays项目一样直接导入该模块,并将其用作import {mean} from 'd3-arrays而无需先将其转换为其他包格式?

我尝试制作一个仅导出导入的UMD代码的填充程序:

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

Ember认为此模块很好,但是永远不会将其添加到require条目列表中。

如果Ember CLI中有一些设计决策,说明为什么此方法不起作用,请向我指出。

我想出了一个优雅的解决方案:

我创建了一个垫片库,该垫片库从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);
  }
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM