我在我的应用程序中使用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
,看看它的工作