使用StealJS加载缺少bower.json文件的Bower组件

时间:2015-09-07 02:18:29

标签: bower stealjs

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

1 个答案:

答案 0 :(得分:1)

假设

所以我要做一些假设:

  • 你正在使用从凉亭偷窃
  • 你是“直接安装”来自github的es6-collections
  • 您使用HTML <script src="bower_components/steal/steal.js" main="main"></script>隐式使用system-bower plugin来加载“主”文件

如果这些事情看起来主要是 true-ish ,那么您可能只需要在bower.json文件中添加一些配置来消除错误/警告并让一切都按预期工作。

说明:

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

解决方案:

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

我们可以通过向bower.json添加"system"属性并添加一些像这样的配置数据来实现这一点......

"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的方式:如果没有任何东西可以进行pollyfill,它会导出一个空对象,所以你不能使用导出的对象,最好只使用它就好像它是一个全局模块。

有关所有这些事情的更多信息......

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并看到它正常工作。