将非commonJS库包含到Webpack上下文有什么好方法?

时间:2016-02-07 00:36:51

标签: javascript angularjs webpack commonjs

我想要包含一个定义AngularJS模块的外部和非commonJS库。

什么是正确的方法,因为我显然不能写:

import MyLibrary from 'MyLibraryPath'
angular.module('MyApp', MyLibrary)

修改---------

我刚刚完成了:

require('path/myLibrary.js'); angular.module('MyApp', 'moduleName');

它有效。

这是一个好习惯吗?

1 个答案:

答案 0 :(得分:1)

是的,如果库不导出Angular模块的name property,则可以。 Angular的设计并未考虑JS模块,最初提升了def run(): # Do something if __name__ == "__main__": print "Hi" 模块定义风格。

从模块中导出angular.module('MyApp', ['moduleName'])是相对流行的惯例,特别是因为可以做到

name

并将其用作

import * as MyLibrary from 'MyLibraryPath';

如果没有模块导出,可以使用Webpack exports-loader

来处理它
angular.module('MyApp', [MyLibrary]);

配置,它基本上将module: { loaders: [ { loader: 'exports-loader', test: /path\/myLibrary\.js$/, query: '"moduleName"' } ], }, 添加到模块。

如果您计划为未导出module.exports = "moduleName";的库PR /创建问题,请使用此hack暂时解决此问题。我不建议让构建更复杂,只是为了保持代码的一致性。