Ember 应用使用插件作为传递依赖安装

Ember app use addon installed as transitive dependency

Ember 应用程序可以使用作为传递依赖项安装的插件吗?我有一个本地 Ember 插件,它在 package.json 中将 ember-angle-bracket-invocation-polyfill 列为 dependency。当我使用 ember install path/to/addon 将插件安装到 Ember 应用程序时,我无法使用 ember-angle-bracket-invocation-polyfill。感谢您的帮助!

插件可以在其安装过程中添加依赖项。这通常在 default blueprint 中完成。默认蓝图是与插件同名的蓝图。通过 ember-cli 安装插件后,它会自动 运行。这就是为什么插件应该由 ember install <addon-name> 安装的主要原因,而不仅仅是使用 npm 或 yarn 将其添加为依赖项。

Ember-cli 根据其类型提供 different methods to add a dependency。由于 ember-angle-bracket-invocation-polyfill 是一个 ember 插件,addAddonsToProject() 应该用于您的情况。它期望一个对象在 packages 键下有一个带有插件名称的数组。

对于您的示例,蓝图如下所示:

// blueprints/your-addon-name/index.js
module.exports = {
  normalizeEntityName() {}, // no-op since we're just adding dependencies

  afterInstall() {
    // Add addons to package.json and run defaultBlueprint
    return this.addAddonsToProject({
      // a packages array defines the addons to install
      packages: [
        // name is the addon name, and target (optional) is the version
        {name: 'ember-angle-bracket-invocation-polyfill'}
      ]
    });
  }
};

更多信息Working with dependencies chapter of ember-cli docs