我使用ember-browserify在我的ember-cli应用程序中查找npm模块,但由于某种原因它不适用于ember-cli插件。
所以我的问题是:有没有其他方法可以将npm模块导入到ember-cli插件中?
编辑:
所以我无法导入npm模块,但是我发现我想要导入的特定模块也是一个bower组件,所以我安装它然后通过index.js
导入它就像这样:
included: function(app) {
this._super.included(app);
app.import('bower_components/dropzone/dist/dropzone.js');
}
这很有效。无法使用node_modules
执行此操作。很难将npm模块导入到ember-cli插件中。
答案 0 :(得分:4)
ember-fetch就是这样做的。代码有点复杂:
treeForVendor: function(tree) {
// Get the path of whatwg-fetch in node modules
var fetchPath = require.resolve('whatwg-fetch');
// use utility function to expand it into a pattern
var expandedFetchPath = expand(fetchPath);
// rename all the files in a tree containing files matching the pattern
var fetch = rename(find(expandedFetchPath), function(path) {
return 'whatwg-fetch/fetch.js'
});
// apply a template to each file in the tree and merge the trees
return mergeTrees([
new Template(fetch, templatePath, function variables(content) {
return {
moduleBody: content
};
})
]);
},
included: function(app) {
this.app = app;
this._super.included(app);
// import the tree created above in treeForVendor
app.import('vendor/whatwg-fetch/fetch.js', {
exports: {
default: [
'default',
'Headers',
'Request',
'Response'
]
}
});
}
取自https://github.com/stefanpenner/ember-fetch/blob/master/index.js
希望这有帮助。
答案 1 :(得分:1)
在插件中,将导入添加到对象的app/
版本(这通常只是导出对象)。
在使用插件的应用中,安装ember-browserify和npm模块。
例如,在插件的app/models/user.js
中:
import TimezoneDetect from 'npm:jstimezonedetect';
export { default } from 'common/models/user';
请参阅 https://github.com/ef4/ember-browserify#using-ember-browserify-in-addons