我正在尝试使用它将我的插件供应供应商的数据提供给应用程序。该库是CKEditor(从CKEditor构建器生成的自定义版本)。 我知道我可以使用插件蓝图添加一个bower依赖,但由于CKEditor是自定义的,我不能使用bower在消费应用程序中下载相同的版本。 我已经使用 treeForPublic 和 broccoli漏斗从我的插件供应商文件夹中将整个ckeditor文件夹复制到app公共文件夹(这是ckeditor所必需的)。 我唯一的问题是消费应用程序还需要在其供应商文件夹中包含ckeditor文件夹,否则它将无法构建,因为观察者无法找到它。 我的印象是,如果插件将文件夹移动到公共目的地并且还导入包含挂钩中的js / css文件,则最终应用程序不需要原始供应商文件夹。 我是否理解错误,或者我可以在不重复插件和应用程序之间的ckeditor文件夹的情况下执行此操作吗?
这是我到目前为止所做的:
included: function(app) {
this._super.included(app);
app.import('vendor/ckeditor_custom/ckeditor.js');
app.import('vendor/ckeditor_custom/styles.js');
app.import('vendor/ckeditor_custom/lang/fr.js');
app.import('vendor/ckeditor_custom/skins/minimalist/editor.css');
},
contentFor: function(type, config) {
if (type === 'vendor-prefix') {
return "window.CKEDITOR_BASEPATH = 'assets/ckeditor/';";
}
},
treeForPublic: function (tree) {
var ckeditorTree = new Funnel('vendor/ckeditor_custom/', {
srcDir: '/',
exclude: ['**/.DS_Store','**/*.md'],
destDir: 'assets/ckeditor'
});
return BroccoliMergeTrees([tree, ckeditorTree]);
},
treeForVendor: function (tree) {
var ckeditorTree = new Funnel('vendor/ckeditor_custom/', {
srcDir: '/',
exclude: ['**/.DS_Store','**/*.md'],
destDir: 'ckeditor_custom'
});
return ckeditorTree;
},
感谢您的帮助!
答案 0 :(得分:0)
给它一个旋转:
var path = require('path');
var mergeTrees = require('broccoli-merge-trees');
var concat = require('broccoli-concat');
module.exports = {
name: 'myaddon',
treeForVendor: function(tree) {
var trees = [tree];
var ckeditorTree = path.join('bower_components', 'ckeditor_custom');
trees.push(concat(ckeditorTree, {
inputFiles: [
'ckeditor.js',
'styles.js',
'lang/fr.js'
],
outputFile: '/ckeditor.js'
}));
trees.push(concat(ckeditorTree, {
inputFiles: [
'skins/minimalist/editor.css'
],
outputFile: '/ckeditor.css'
}));
return mergeTrees(trees);
},
included: function included(app) {
this.app = app;
app.import('vendor/ckeditor.js');
app.import('vendor/ckeditor.css');
}
};