我的团队决定我们希望与我们的文件名命名约定保持一致,并决定我们要在所有项目中坚持使用下划线;这不仅仅是Ember /前端项目,还有API,DB,模式库,样式指南等。我们还想使用Ember CLI或下一个前端项目。是否可以选择将“dasherized”命名约定更改为“强调”?如果没有,我们将如何解决这个问题?我希望解决方案比仅仅创建我们自己的CLI分支更容易。
答案 0 :(得分:0)
基于runspired的建议,这是一个自定义解析器,用_转换模块到: -
import Resolver from 'ember-resolver';
import ModuleRegistry from 'ember-resolver/utils/module-registry';
function DasherizedModuleRegistry(entries) {
var keys, key;
this._entries = entries || requirejs.entries;
// Convert underscore in module names to dashes
keys = Object.keys(this._entries);
keys.forEach((key) => {
var dasherizedKey = key.replace(/_/g, '-');
if (dasherizedKey !== key) {
this._entries[dasherizedKey] = this._entries[key];
delete this._entries[key];
}
});
}
DasherizedModuleRegistry.prototype = Object.create(ModuleRegistry.prototype);
DasherizedModuleRegistry.prototype.constructor = DasherizedModuleRegistry;
export default Resolver.extend({
init: function() {
this._super();
if (!this._moduleRegistry || !(this._moduleRegistry instanceof DasherizedModuleRegistry)) {
this._moduleRegistry = new DasherizedModuleRegistry();
}
},
});
将其放入您的ember-cli应用中的app/resolver.js
。我们混合了components/foo_bar.js
和components/bar-foo.js
,这个解析器适用于我们。
请注意,此转换将在应用程序启动时在客户端的浏览器中运行,可能使用大型代码库降低速度。