Постоянно игнорировать зависимость с беседкой
Я загружаю angular, angular -bootstrap и bootstrap с беседкой. Bootstrap имеет зависимость от jquery, который установлен в процессе. Но мне это не нужно в моем проекте, так как я использую только bootstrap css.
Итак, я попытался навсегда удалить зависимость от jquery с помощью
bower uninstall jquery --save
Это удаление jquery, но в следующий раз, когда я сделаю bower update
, он снова загрузится.
Есть ли способ сообщить игроку постоянно пропустить зависимость?
edit: Я хотел бы что-то вроде этого:
"resolutions": {
"jquery": "no, thanks"
}
Ответы
Ответ 1
Pull request # 1394 добавила официальную поддержку для этой функции и присутствует в версии 1.6.3 и ниже. Проверьте свою версию с помощью bower -v
и запустите npm install -g bower
для обновления.
Для справки см. официальный документ .bowerrc
. Если это не сработает для вас, укажите проблему с bower, потому что это ошибка.
Мы используем его в нашем .bowerrc
, например:
{
"ignoredDependencies": [
"bootstrap",
"bootstrap-sass",
"bootstrap-sass-official"
]
}
Ответ 2
У нас была аналогичная ситуация, когда у нас была Backbone зависимость от Underscore в ее bower.json
, но вместо этого мы используем Lo-Dash, поэтому Bower излишне вытягивал Underscore для каждой установки. У нас есть автоматические проверки соответствия сторонних лицензий, поэтому мы не хотели ничего, что мы действительно не использовали.
Я понимаю, что это не совсем то, для чего они предназначены, но Bower install-hooks можно использовать для очистки ненужных отпечатков post- установите (по крайней мере, до тех пор, пока Bower не получит такое разрешение "спасибо", на которое вы намекали). В .bowerrc
:
{
"directory": "app/bower_components",
"scripts": {
"postinstall": "rm -rf app/bower_components/underscore"
}
}
Это немного взломать, но работает.
Ответ 3
Что-то, что вы можете сделать и в файле bower.json
:
{
"dependencies": {
...
"bootstrap": "^3.2.0"
}
"overrides": {
"bootstrap": {
"dependencies": []
}
}
}
Это означает: удалить все зависимостей boostrap, что вам нужно, поскольку jquery является единственным (вы можете проверить с помощью bower info bootstrap
)
Ответ 4
Добавьте его в свой .gitignore, если вы зафиксируете свои зависимости. В противном случае оставьте его, поскольку это не имеет значения. Вы должны просто использовать то, что вам нужно, и игнорировать остальных.
Ответ 5
Вышеуказанные ответы верны, но дополнительным решением является использование wiredep, как описано в этом ответе:
grunt-bower-install: исключить определенные компоненты
После установки grunt-wiredep вы можете добавить что-то похожее на это в свой Grunt.js, чтобы исключить jquery из вставки:
// Automatically inject Bower components into the app
wiredep: {
options: {},
app: {
src: ['<%= my.app %>/index.html'],
exclude: ['bower_components/jquery']
}
},
Bower все равно загрузит jquery, но, по крайней мере, вы можете сказать, что он не будет включен в HTML src.
Ответ 6
ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Это не устраняет вашу конкретную проблему, но помогло мне, поэтому, возможно, это поможет другим людям.
Я использую grunt-bower-task, чтобы вытащить файлы в каталог lib. Я хотел исключить "angular" и просто включить "angular.js". Одна из моих зависимостей заключалась в "angular" . В моем bower.json
у меня теперь есть:
{
"name": "myapp",
"version": "0.0.1",
"dependencies": {
"angular.js": "1.3.15",
"angular-bootstrap": "0.13.0",
"angular-cookies": "1.3.15",
"angular-storage": "0.5.0",
"angular-ui-router": "0.2.15",
"mjolnic-bootstrap-colorpicker": "2.1"
},
"exportsOverride": {
"angular": {
"dump": "*.xxx"
},
"angular.js": {
"js": [ "*.js", "*.js.map" ],
"css": "*.css"
}
},
"resolutions": {
"angular": "1.3.15"
}
}
В моем gruntfile.js
у меня есть:
bower: {
install: {
options: {
targetDir: './lib',
layout: 'byType',
install: true,
cleanTargetDir: true,
cleanBowerDir: false
}
}
},
Это останавливает копирование файлов "angular" в пункт назначения.