在进行了一些 ember 插件挖掘之后,我发现了 ember-cli-mirage 中使用的一个很棒的 sol'n,https://github.com/samselikoff/ember-cli-mirage/blob/master/ember-cli-build.js
要点是文件路径在插件的ember-cli-build.js中指定,插件从该属性读取,默认为this.app.project.root
空白时。
例如
// ember-cli-myaddon/index.js
// added this
included: function() {
this.addonPath = this.app.options['myaddon']['directory'] || 'app';
},
// modified filePath
contentFor(name) {
if (name ==='body') {
var filePath = path.join(this.app.project.root, this.addonPath, 'some-file.html');
var file = fs.readFileSync(filePath);
return [file];
}
}
然后在插件的ember-cli-build.js文件中,我们指定虚拟应用程序的目录:
// ember-cli-build.js
/* global require, module */
var path = require('path');
var EmberApp = require('ember-cli/lib/broccoli/ember-addon');
module.exports = function(defaults) {
var app = new EmberApp(defaults, {
'myaddon': {
directory: path.join('tests', 'dummy')
}
});
return app.toTree();
};
现在,插件测试在以下位置查找some-file.html:
ember-cli-myaddon/tests/dummy/app/some-file.html
在一个真实的项目中,some-file.html被查找:
your-project/app/some-file.html
另外,您还可以获得允许用户在他们的ember-cli-build.js文件中配置文件路径的好处!赢/赢/赢