bower - tutorial - npm
ignorar permanentemente una dependencia con bower (6)
Estoy descargando angular, bootstrap angular y bootstrap con Bower. Bootstrap tiene una dependencia en jquery que está instalada en el proceso. Pero no lo necesito en mi proyecto ya que solo estoy usando el css de bootstrap.
Así que traté de eliminar permanentemente la dependencia de jquery con
bower uninstall jquery --save
Está desinstalando jquery, pero la próxima vez que haga una bower update
, se descargará nuevamente.
¿Hay alguna manera de decirle a Bower que omita permanentemente una dependencia?
editar: Ojalá hubiera algo como esto:
"resolutions": {
"jquery": "no, thanks"
}
Agrégalo a tu .gitignore si comprometes tus dependencias. De lo contrario déjalo como no hace diferencia. Deberías usar lo que necesitas e ignorar el resto.
Algo que también puedes hacer en tu archivo bower.json
:
{
"dependencies": {
...
"bootstrap": "^3.2.0"
}
"overrides": {
"bootstrap": {
"dependencies": []
}
}
}
Esto significa: eliminar todas las dependencias de boostrap, que es lo que quieres, ya que jquery es el único (puedes consultar con bower info bootstrap
)
DESCARGO DE RESPONSABILIDAD: Esto no soluciona su problema en particular, pero ayudó con el mío, por lo que tal vez ayude a otras personas.
Estoy usando grunt-bower-task para extraer los archivos en un directorio lib. Quería excluir "angular" y solo incluir "angular.js". Una de mis dependencias estaba tirando en "angular". En mi bower.json
ahora tengo:
{
"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"
}
}
En mi gruntfile.js
tengo:
bower: {
install: {
options: {
targetDir: ''./lib'',
layout: ''byType'',
install: true,
cleanTargetDir: true,
cleanBowerDir: false
}
}
},
Esto evita que los archivos "angulares" se copien al destino.
Las respuestas anteriores son correctas, pero una solución adicional es usar wiredep como se explica en esta respuesta:
grunt-bower-install: excluye ciertos componentes
Después de instalar grunt-wiredep, puede agregar algo similar a esto a su Grunt.js para excluir jquery de ser inyectado:
// Automatically inject Bower components into the app
wiredep: {
options: {},
app: {
src: [''<%= my.app %>/index.html''],
exclude: [''bower_components/jquery'']
}
},
Bower aún descargará jquery desafortunadamente, pero al menos puedes decir que no debe incluirse en el src HTML.
Tuvimos una situación similar en la que tuvimos Backbone dependiendo de Underscore en su bower.json
, pero estamos usando Lo-Dash en su lugar, por lo que Bower estaba bajando innecesariamente el Underscore para cada instalación. Hemos automatizado los controles para el cumplimiento de la licencia de terceros, por lo que no queríamos nada que no usamos en realidad.
Me doy cuenta de que esto no es exactamente para lo que están diseñados, pero los install-hooks de install-hooks de Bower se pueden usar para limpiar depsitos innecesarios después de la instalación (al menos hasta que Bower obtenga el tipo de resolución de "no gracias" que insinuó). En tu .bowerrc
:
{
"directory": "app/bower_components",
"scripts": {
"postinstall": "rm -rf app/bower_components/underscore"
}
}
Es un truco, pero funciona.
La solicitud de extracción n.º 1394 agregó soporte oficial para esta característica y está presente en la versión 1.6.3 y posterior de bower. Verifique su versión con bower -v
, y ejecute npm install -g bower
para actualizar.
Como referencia, consulte el documento de especificaciones oficiales de .bowerrc
. Si esto no funciona para usted, presente un problema con bower porque es un error.
Lo usamos así en nuestro .bowerrc
como el siguiente:
{
"ignoredDependencies": [
"bootstrap",
"bootstrap-sass",
"bootstrap-sass-official"
]
}