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