带有 Ember-CLI 的 UMD

mis*_*nry 5 javascript ember.js ember-cli

我正在尝试通过 ember-cli 在我的 Ember 应用程序中加载gridstack。我通过安装应用程序bower并导入到我的ember-cli-build.js文件中。它_通过以下方式作为库包括:

if (typeof define === 'function' && define.amd) {
    define(['jquery', 'lodash'], factory);
}
Run Code Online (Sandbox Code Playgroud)

define.amd 评估为 false

我调查了为什么会这样,发现 ember-cli 的加载器不支持UMD. 在开放 cli问题上,主要 cli 开发人员之一 Stefan Penner 建议:

这是设计使然。因为这个库需要一个预构建步骤来对模块进行去匿名化。该步骤可以进行适当的修改以正常工作

我不知道这意味着什么。我通过ember-cli-build在这个库之前手动导入这个库的依赖项来解决这个问题,但这违背了依赖项管理的目的。我怎样才能让这个库解析它自己的模块?

jel*_*han 1

新 Ember 项目的最新 Ember CLI 蓝图包含ember-auto-importember-auto-import是一个允许在 Ember 中导入任何 NPM 库的库。无需配置。它也可以安装在使用旧版 Ember CLI 的项目中,这是推荐的方式。

如果您不想安装额外的依赖项 - 即使它是官方蓝图的一部分 - Ember CLI 不仅支持标准命名 AMD 资产app.import('path/to/entry-point.js')还支持标准匿名 AMD 资产

app.import('path/to/entry-point.js', {
  using: [
    { transformation: 'amd', as: 'your-named-import' }
  ]
});
Run Code Online (Sandbox Code Playgroud)

正常情况下,这会进入您的ember-cli-build.js.

Sidenode:有一段时间,ember-browserify是 CommonJS 模块的推荐解决方案。但它已被弃用,取而代之的是ember-auto-import.