如何在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
来调试我的插件,也许这可能是问题的根源?
答案 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