permanently ignore a dependency with bower

后端 未结 6 1280
太阳男子
太阳男子 2020-12-05 02:11

I am downloading angular, angular-bootstrap and bootstrap with bower. Bootstrap has a dependency on jquery which is installed in the process. But i don\'t need it in my proj

相关标签:
6条回答
  • 2020-12-05 02:13

    Pull request #1394 added official support for this feature and is present in bower version 1.6.3 and later. Check your version with bower -v, and run npm install -g bower to upgrade.

    For reference, please see the .bowerrc official specification document. If this doesn't work for you, please file an issue with bower because it is a bug.

    We use it like this in our .bowerrc such as the following:

    {
      "ignoredDependencies": [
        "bootstrap",
        "bootstrap-sass",
        "bootstrap-sass-official"
      ]
    }
    
    0 讨论(0)
  • 2020-12-05 02:23

    Something you can do also in your bower.json file:

    {
      "dependencies": {
        ...
        "bootstrap": "^3.2.0"
      }
      "overrides": {
        "bootstrap": {
          "dependencies": []
        }
      }
    }
    

    This means: remove all boostrap's dependencies, which is what you want since jquery is the only one (you can check with bower info bootstrap)

    0 讨论(0)
  • 2020-12-05 02:24

    DISCLAIMER: This doesn't fix your particular problem, but it helped with mine, so maybe it'll help other people.

    I'm using grunt-bower-task to pull the files into a lib directory. I wanted to exclude "angular" and just include "angular.js". One of my dependencies was pulling in "angular". In my bower.json I now have:

    {
      "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"
      }
    } 
    

    In my gruntfile.js I have:

    bower: {
        install: {
            options: {
                targetDir: './lib',
                layout: 'byType',
                install: true,
                cleanTargetDir: true,
                cleanBowerDir: false
            }
        }
    },
    

    This stops the "angular" files from being copied to the destination.

    0 讨论(0)
  • 2020-12-05 02:27

    The above answers are correct but an additional solution is to use wiredep as explained in this answer:

    grunt-bower-install: exclude certain components

    After installing grunt-wiredep, you can add something similar to this to your Grunt.js to exclude jquery from being injected:

    // Automatically inject Bower components into the app
    wiredep: {
      options: {},
      app: {
        src: ['<%= my.app %>/index.html'],
        exclude: ['bower_components/jquery']
      }
    },
    

    Bower will still download jquery unfortunately but at least you can tell it not to be included in the HTML src.

    0 讨论(0)
  • 2020-12-05 02:33

    Add it to your .gitignore if you commit your dependencies. Otherwise leave it as it makes no difference. You should just use what you need and ignore the rest.

    0 讨论(0)
  • 2020-12-05 02:39

    We had a similar situation where we had Backbone depend on Underscore in its bower.json, but we're using Lo-Dash in its stead, so Bower was unnecessarily pulling down Underscore for each install. We have automated checks for 3rd party license compliance, so we didn't want anything we don't actually use.

    I realize this isn't exactly what they're meant for, but Bower's install-hooks can be used to clean unneeded deps post-install (at least until Bower gets the sort of "no thanks" resolution you hinted at). In your .bowerrc:

    {
        "directory": "app/bower_components",
        "scripts": {
            "postinstall": "rm -rf app/bower_components/underscore"
        }
    }
    

    It's a bit of a hack, but works.

    0 讨论(0)
提交回复
热议问题