是否可以在Ember CLI中更改文件名约定?

时间:2015-03-16 04:00:18

标签: ember.js ember-cli

我的团队决定我们希望与我们的文件名命名约定保持一致,并决定我们要在所有项目中坚持使用下划线;这不仅仅是Ember /前端项目,还有API,DB,模式库,样式指南等。我们还想使用Ember CLI或下一个前端项目。是否可以选择将“dasherized”命名约定更改为“强调”?如果没有,我们将如何解决这个问题?我希望解决方案比仅仅创建我们自己的CLI分支更容易。

1 个答案:

答案 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.jscomponents/bar-foo.js,这个解析器适用于我们。

请注意,此转换将在应用程序启动时在客户端的浏览器中运行,可能使用大型代码库降低速度。