在Ember Addon中包括凉亭组件

时间:2016-03-01 10:37:40

标签: ember.js bower ember-addon

如何在Ember插件中工作,在安装插件时包含bower包。

1)我在{@ 1}}

的插件中安装了我想要包含的凉亭包

2)然后在我的插件中,在根目录中编辑bower instal packagename --save,看起来像这样:

index.js

然而,当我尝试启动安装了插件的应用程序时,我得到了一个 /* jshint node: true */ 'use strict'; module.exports = { name: 'my-ember-component', included: function(app) { this._super.included(app); if(app.import){ app.import(app.bowerDirectory + '/path-to-package/package.js'); } } };

我希望避免手动将bower依赖项添加到我安装插件的每个应用程序中。

注意:我正在使用ENOENT: no such file or directory, stat '/my-ember-application/tmp/source_map_concat-input_base_path-bWTPoVC9.tmp/0/bower_components/path-to-package/package.js来调试我的插件,也许这可能是问题的根源?

1 个答案:

答案 0 :(得分:2)

通常,在ember install addon期间,插件的凉亭组件会添加到消费项目中。

但是,因为你正在进行本地开发并使用npm链接。你需要模拟这个。你可以这样做:

ember generate your-addon-name

解释

查看ember cli文档中default blueprints上的文档。

  

与插件同名的蓝图(除非明确说明   更改,见上文)将在安装后自动运行(in   开发时,必须在链接后手动运行)。这就是你的地方   可以将您的插件的凉亭依赖关系绑定到客户端应用程序中   他们实际安装好了。

简而言之,您需要为您的应用创建默认蓝图,并在那里添加凉亭依赖。

创建文件:

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

  afterInstall: function() {
    return this.addBowerPackageToProject('BOWER PACKAGE NAME'); // is a promise
  }
};

然后当您使用

运行默认蓝图时
ember generate your-addon-name