Подтвердить что ты не робот

Bower или grunt продолжает удалять jquery из index.html

Это сводит меня с ума. До сих пор Bower + Grunt (через Yeoman) был основным источником разочарования и пустая трата времени. Все, что я хочу, это мое приложение, чтобы использовать последнюю версию (jQuery) версии (2.1.0).

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",
    ...

Но каждый раз, когда я запускаю grunt build или grunt 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
...

Добавление его вручную ничего не решает. Я полностью застрял. Должно быть, я что-то делаю неправильно, но я долго стучал головой, будучи совершенно непродуктивным. Спасибо.

4b9b3361

Ответ 1

Здесь длинный ответ, но у меня есть только время для короткого, и я подумал, что я мог бы также дать это вместо ничего!

bower-install - это задача, которая зависит от пакетов Bower, правильно определяющих свойство main внутри их bower.json. Некоторые недавние материалы продолжаются с пакетом jQuery Bower, и он больше не указывает это свойство. Без, grunt-bower-install не может много помочь.

Решение состоит в том, чтобы вручную включить эту ссылку в jQuery вне блока <!-- bower:js --><!-- endbower --> в вашем HTML.

Извините за разочарование. Надеюсь, jQuery скоро исправит свой bower.json.

Ответ 2

Здесь есть еще лучшее решение, которое не заставляет вас перемещать тег script от других компонентов башмака. Вы можете использовать раздел overrides (найденный на https://github.com/ajaxorg/ace-builds/issues/20)

Добавьте следующий проект в проект bower.json

...
"overrides": {
    "jquery": {
        "main": "dist/jquery.js"
    }
}

Ответ 3

Я видел ту же проблему несколько минут назад с помощью grunt + yeoman + bower. В моем случае решение "переопределяет" не сработало.

grunt wiredep

продолжал переупорядочивать записи в app/index.html. Проблема оказалась в расположении jquery в разделе зависимостей bower.json. В моем случае jquery был 9-й записью в разделе зависимостей в bower.json.

grunt wiredep 

затем переместит

<script src="bower_components/jquery/dist/jquery.js"></script>

в местоположение # 9 в app/index.html, даже если я вручную сделал запись №1 или использовал переопределения.

В моем случае jquery должен быть впереди angular, и это переупорядочение убивало мое приложение во время выполнения.

Мой раздел зависимостей в bower.json выглядел как до:

"dependencies": {
    "angular": "1.4.8",
    "angular-animate": "^1.3.0",
    "angular-aria": "^1.3.0",
    "angular-cookies": "^1.3.0",
    "angular-messages": "^1.3.0",
    "angular-resource": "^1.3.0",
    "angular-route": "^1.3.0",
    "angular-sanitize": "^1.3.0",
    "jquery": "^2.2.3",
},

Теперь это выглядит так (обратите внимание, как jquery переместился в позицию # 1).

"dependencies": {
    "jquery": "^2.2.3",
    "angular": "1.4.8",
    "angular-animate": "^1.3.0",
    "angular-aria": "^1.3.0",
    "angular-cookies": "^1.3.0",
    "angular-messages": "^1.3.0",
    "angular-resource": "^1.3.0",
    "angular-route": "^1.3.0",
    "angular-sanitize": "^1.3.0",
}

Я помещаю это здесь, чтобы другие могли использовать это решение, если ничего не работает.

Ответ 4

Простое и правильное решение - добавить эту ссылку в раздел переопределений в bower.json: как здесь, я добавил для jquery-ui.

"overrides": {
    "bootstrap": {
      "main": [
        "less/bootstrap.less",
        "dist/css/bootstrap.css",
        "dist/js/bootstrap.js"
      ]
    },
    "jquery-ui": {
      "main": [
        "themes/base/jquery-ui.css",
        "ui/jquery-ui.js"
      ]
    }
  }

Ура :)

Ответ 5

Как предлагается по этой ссылке fooobar.com/info/411930/... Это работает для меня. Добавив метод переопределения в bower.json и затем установив bower --save