bower或grunt不断从index.html中删除jquery

seb*_*kem 15 jquery gruntjs bower

这真让我抓狂.到目前为止,Bower + Grunt(来自Yeoman)一直是挫败感和浪费时间的主要原因.我想要的只是我的应用程序使用最新的(2.1.0)版本的jquery.

bower list 正确报告jquery 2.1.0作为官方更新.

我跑去bower install --save jquery更新到最后一个版本,它做到了.

bower list命令现在正确地报告jquery#2.1.0为依赖项,并且该bower.json文件现在正确地将所需版本的jquery列为依赖项:

{
  "name": "xxx",
  "version": "0.0.0",
  "dependencies": {
    ...
    "angular": "1.2.13",
    "jquery": "~2.1.0",
    "sizzle": "1.10.16",
    "bootstrap": "~3.0.3",
    ...
Run Code Online (Sandbox Code Playgroud)

但是我每次运行时grunt buildgrunt serve<script src="bower_components/jquery/dist/jquery.js"></script>列表中被删除从index.html,防止整个应用程序正常工作.

#> grunt serve
Running "serve" task

Running "clean:server" (clean) task
Cleaning .tmp...OK

Running "bower-install:app" (bower-install) task

jquery was not injected in your file.
Please go take a look in "app/bower_components/jquery" for the file you need, then manually include it in your file.

Running "concurrent:server" (concurrent) task
...
Run Code Online (Sandbox Code Playgroud)

手动添加它并不能解决任何问题.我完全卡住了.肯定会有一些我做错的事情,但是我一直在敲打我的头很长一段时间而完全没有效率.谢谢.

Ste*_*hen 22

这里有一个很长的答案,但我只有时间做一个简短的答案,我想我也可以给它而不是什么!

bower-install是一个依赖于Bower包正确指定其main内部属性的任务bower.json.最近的一些东西继续使用jQuery Bower包,它不再指定这个属性.没有,grunt-bower-install不能帮助太多.

解决方案是<!-- bower:js --><!-- endbower -->在HTML中手动包含对块外部的jQuery的引用.

抱歉沮丧.希望jQuery很快就会修复它的bower.json.


Mik*_*ith 16

这里有一个更好的解决方案,它不会强迫您将脚本标签从其他凉亭组件移开.您可以使用一个overrides部分(可在https://github.com/ajaxorg/ace-builds/issues/20上找到)

将以下部分添加到项目中 bower.json

...
"overrides": {
    "jquery": {
        "main": "dist/jquery.js"
    }
}
Run Code Online (Sandbox Code Playgroud)