我正在玩角度,并注意到凉亭有一些不受欢迎的行为.我用自耕农创建了我的应用程序,并使用bower进行依赖管理. index.html文件中有一节应由bower管理:
<!-- build:js scripts/vendor.js --> <!-- bower:js --> <script src="bower_components/jquery/jquery.js"></script> <script src="bower_components/angular/angular.js"></script> <script src="bower_components/bootstrap/dist/js/bootstrap.js"></script> <script src="bower_components/angular-resource/angular-resource.js"></script> <script src="bower_components/angular-cookies/angular-cookies.js"></script> <script src="bower_components/angular-sanitize/angular-sanitize.js"></script> <script src="bower_components/angular-route/angular-route.js"></script> <script src="bower_components/angular-ui-router/release/angular-ui-router.js"></script> <script src="bower_components/select2/select2.js"></script> <script src="bower_components/angular-ui-select2/src/select2.js"></script> <script src="bower_components/angular-ui-tinymce/src/tinymce.js"></script> <!-- endbower -->
我注意到传递依赖关系没有添加到此列表中.例如,角度ui-tinymce取决于tinymce.尽管tinymce作为传递依赖安装,但它不包含在index.html文件中,所以我必须自己包含它.但这打败了管理脚本的实践包括用bower(即如果我卸载angular-tinymce,bower将删除它的脚本,但我手动添加的tinymce脚本将在那里挂起.
有可能告诉bower在index.html文件中添加传递依赖项吗?或者这是一个坏主意,应该手工管理?
社区中最好的做法是什么?
解决方法
grunt-bower-install
的Grunt任务,它正在插入HTML.它在您的Gruntfile.js中配置为bower-install,然后可能作为grunt serve的一部分运行.它也可以直接调用:grunt bower-install.
只要您在bower.json中安装并保存了Bower组件,它及其依赖项将按照与其关系匹配的顺序注入到您的HTML中.但是,唯一不行的是,当Bower组件未在其自己的bower.json文件中指定主属性时.
所以,要清楚,你有一个bower.json列出你的应用程序的依赖项.此外,您在大多数时间列出的每个依赖项都有自己的bower.json,它列出了它的依赖项(如果有的话),还有一个main属性,它告诉像grunt-bower-install这样的文件要注入到HTML中.只要其中一个依赖项无法遵循指定main的约定,grunt-bower-install就会失去它的魔力.
在angular-ui-tinymce的情况下,它确实是list tinymce
as a dependency,但是tinymce
没有配置bower.json文件.因此,没有bower.json带有一个主要属性来告诉grunt-bower-install注入要注入的文件out of all these.
我能看到的最佳选择是手动写出< script>像你说的那样标记自己,并在你决定不使用它时手动删除它.在最糟糕的情况下,当grunt-bower-install不起作用时,它仍然只是我们这些年来习惯的网络开发.