永久忽略与凉亭的依赖关系

时间:2014-01-05 20:33:43

标签: bower

我正在使用凉亭下载角度,角度引导和引导程序。 Bootstrap依赖于安装在进程中的jquery。但我在我的项目中不需要它,因为我只使用bootstrap的CSS。

所以我试图用

永久删除对jquery的依赖
bower uninstall jquery --save

它正在卸载jquery,但下次我创建bower update时,会再次下载它。

有没有办法让bower永久跳过依赖?

编辑:我希望有这样的事情:

"resolutions": {
    "jquery": "no, thanks"
}

6 个答案:

答案 0 :(得分:69)

Pull request #1394为此功能添加了官方支持,并在bower版本1.6.3及更高版本中提供。使用bower -v检查您的版本,然后运行npm install -g bower进行升级。

供参考,请参阅.bowerrc official specification document。如果这对您不起作用,请file an issue with bower,因为这是一个错误。

我们在.bowerrc中使用它,如下所示:

{
  "ignoredDependencies": [
    "bootstrap",
    "bootstrap-sass",
    "bootstrap-sass-official"
  ]
}

答案 1 :(得分:25)

我们遇到过类似的情况,我们让Backbone在其bower.json中依赖于Underscore,但我们正在使用Lo-Dash,因此Bower在每次安装时不必要地拉下Underscore。我们对第三方许可证合规性进行了自动检查,因此我们并不想要任何我们不能实际使用的内容。

我意识到这并不是他们的意思,但Bower的install-hooks可用于在安装后清除不需要的deps(至少在Bower获得排序之前) "不,谢谢"你暗示的决议)。在.bowerrc

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

这有点像黑客,但有效。

答案 2 :(得分:13)

您可以在bower.json文件中执行以下操作:

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

这意味着:删除所有boostrap的依赖项,这是你想要的,因为jquery是唯一的(你可以查看bower info bootstrap

答案 3 :(得分:5)

如果您提交依赖项,请将其添加到.gitignore。否则保留它,因为它没有任何区别。你应该只使用你需要的东西而忽略其余的东西。

答案 4 :(得分:1)

上述答案是正确的,但另一种解决方案是使用wiredep,如本答案中所述:

grunt-bower-install: exclude certain components

安装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中。

答案 5 :(得分:1)

免责声明:这不能解决您的特定问题,但它对我有帮助,所以也许它会帮助其他人。

我正在使用grunt-bower-task将文件拉入lib目录。我想排除“angular”,只包括“angular.js”。我的一个依赖是拉入“有角度”。在我的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”文件被复制到目的地。