使用StealJS来加载缺少电源的电源组件.json文件



我在我的应用程序中使用StealJS + Bower集成,但是我的几个Bower组件(包括es6-collections)不包含Bower。json文件。因为es6-collections是我的项目库中的依赖项之一。. json文件,StealJS尝试加载es6-collections组件的代码。json文件,找不到它,因为它不存在,并抱怨:Unable to load the bower.json for es6-collections.我尝试使用System.config({ path: { 'es6-collections': '...' } })来通知StealJS加载es6-collections时使用的脚本路径,但这没有帮助。我怎么做才能让StealJS加载这个组件?

假设

所以我要做一些假设:

  • 你正在从github直接安装
  • 你是隐式地使用system-bower插件通过使用HTML <script src="bower_components/steal/steal.js" main="main"></script>来加载你的"main"文件

如果这些事情看起来大多真实,那么你可能只需要在你的bower.json文件中添加一些配置来沉默错误/警告,并使一切按预期工作。

解释:

所以,因为system-bower插件(你是隐式使用的,因为steal检测到它是从一个bower_components目录加载的)使用组件bower.json文件来确定入口点,所以在这种情况下,错误/警告来自无法找到es6-collections bower.json文件。

解决方案:

所以我们只需要告诉System(由steal使用)在哪里找到该模块,它可以停止寻找它的bower.json文件。

我们可以通过添加一个"system"属性来实现。Json和添加一些配置数据,像这样…

"system": {
  "paths": {
    "es6-collections": "bower_components/es6-collections/index.js"
  },
  "bowerIgnore": ["es6-collections"],
  "meta": {
    "es6-collections": {
      "format": "global"
    }
  }
}
  • paths配置在那里,告诉系统在哪里找到模块
  • bowerIgnore数组告诉system-bower不要为该模块查找bower.json
  • meta配置是告诉系统来对待这个模块,就像它是一个脚本,将添加到全局对象(在浏览器中的窗口),你可能应该为这个特定的模块,因为es6-collections的方式编写:它导出一个空对象,如果它没有什么要填充,所以你不能使用导出的对象,最好只是使用它,如果它是一个全局模块。

关于所有这些的更多信息…

http://stealjs.com/docs/bower.html

https://github.com/systemjs/systemjs/wiki/Meta-Configuration

http://stealjs.com/docs/steal.html

这里只是有一个工作的例子https://gist.github.com/BigAB/c108bb0860c9cfee3d6a有三个文件,你可以复制粘贴/克隆,然后做一个bower install,看看它的工作

最新更新