3

I have generated an AngularJS project with yeoman, and have the standard 'Allo, 'Allo! page working.

I then decided to add restangular to the project, so executed "bower install restangular" which correctly installed the package (bower list shows the restangular reference).

However, I expected the index.html file to automatically be update with the correct script references to restangular and its dependencies.

Am I using the wrong yeoman convention for installing additional dependencies?

4

3 回答 3

5

亚当是正确的。处理此问题的最可靠方法是bower_components/your-installed-package/查找要包含的文件。目前,包作者并未始终使用 Bower。更具体地说,一些作者指定了一个bower.jsonwith "main": "path/to/file.js"defined。但是,有些/大多数没有。如果没有定义,那么可以发生多少魔法是有限制的,因为它取决于脚本的最佳猜测应该包含的主文件是什么。

我写了一个 grunt 任务来尝试解决这个问题,但是,当包main定义了属性时,它将注入一个脚本:https ://github.com/stephenplusplus/grunt-bower-install

而不是打字bower install jquery --save,你会说:grunt bower-install:jquery

如果你试一试,请告诉我进展如何!

于 2013-07-17T19:07:14.080 回答
1

您可以使用 grunt-bower-install https://github.com/stephenplusplus/grunt-bower-install来完成。按照他的指示,将配置添加到您的 Gruntfile 中,并将注释块添加到您的 index.html 中。

安装你想要使用的包bower install yourpackage -S。您需要 -S 才能将其添加到 bower.json

如果 bower-install 告诉您它无法自动获取,请转到 app/bower_components/yourpackage/bower.json 并添加"main": "path/to/file.js"

您可以使用数组执行多个文件,例如:

"main": ["lib/persistence.js", "lib/persistence.store.mysql.js", "lib/persistence.sync.js"]

我还发现将 bower-install 添加到常见的 grunt 任务中很有用,这样您就不需要调用grunt bower-install. 这是将其添加到grunt serve任务中:

grunt.registerTask('serve', function (target) {
    if (target === 'dist') {
  return grunt.task.run(['build', 'connect:dist:keepalive']);
}

grunt.task.run([
  'bower-install',
  'clean:server',
  'concurrent:server',
  'autoprefixer',
  'connect:livereload',
  'watch'
]);

});

于 2013-11-23T05:24:30.360 回答
0

文档中

静态使用 Bower 包的最简单方法是从脚本标签手动引用包:

<script src="bower_components/modernizr/modernizr.js"></script>

听起来你在正确的轨道上。只需将脚本标签添加到您的 HTML。

于 2013-07-16T21:42:34.690 回答