Bower安装目录更改:有时会附加版本

时间:2014-01-27 15:34:02

标签: bower

我有一个使用凉亭的项目。

我的bower.json:

{
  "name": "myproject",
  "version": "0.0.0",
  "dependencies": {
    ...
    "angular-sanitize": "1.2.1",
    ...

然后我运行bower install。

然后我可以看到安装的内容:

➜  myproject git:(develop) ✗ ls app/bower_components/angular-sanitize/
README.md                   angular-sanitize.min.js     bower.json
angular-sanitize.js         angular-sanitize.min.js.map

然后一位同事检查了他的机器上的bower install项目,这个依赖项安装在

app/bower_components/angular-sanitize/bower-angular-sanitize-v1.2.1/

而不是我原来的

app/bower_components/angular-sanitize/


那么为什么凉亭有时会将bower-angular-sanitize-v1.2.1 /添加到安装文件夹?

Notes :我们有同样的bower.json和版本的凉亭。如果我删除了我的bower_dependencies并重新安装,我仍然有旧文件夹。


修改

我的理解(玩过一段时间后用bower安装一个删除bower_components,清除bower缓存等)...

我的问题与凉亭如何解决决议有关。一旦bower提示您选择几个版本(jquery,angular和bootstrap),似乎解决了版本。

但仍有一些我不明白的事情:

  • 在我的机器上,即使删除了bower缓存,删除bower_dependencies或将bower.json复制到新文件夹中,bower也不会在“bower install”后提示我解决方案(那么它们是如何存储的?)< / p>

  • 在我的同事机器上,凉亭仅在他的原生系统上提示解决方案(而不是在“在阴道机中安装”凉亭时)。

所以,我还有一些不为人知的观点: bower如何存储依赖项解析?在任何地方都有关于此的文档吗?我找到的唯一一个地方就是一些github问题(以及通过玩弄它)。

我的bower.json:

{
  "name": "myproject",
  "version": "0.0.0",
  "dependencies": {
    "json3": "~3.2.4",
    "bootstrap-sass": "~2.3.1",
    "es5-shim": "~2.0.8",
    "angular-cookies": "~1.2.1",
    "angular-dragdrop": "<=1.0.4",
    "angular-strap": "~0.7.1",
    "angulartics": "~0.8.4",
    "jquery": "~1.8.3",
    "underscore": "~1.4.4",
    "angular": "1.2.1",
    "angular-route": "1.2.1",
    "angular-resource": "1.2.1",
    "angular-sanitize": "1.2.1",
    "angular-ui-date": "~0.0.3",
    "jquery.masonry": "v2.1.08",
    "bootstrap": "~2.3.1",
    "angular-bootstrap": "~0.10.0",
    "highcharts": "~3.0.2",
    "jqueryui-timepicker-addon": "~1.4",
    "moment": "~2.0.0",
    "bootstrap-notify": "0.1.0",
    "mjaalnir-bootstrap-colorpicker": "~1.0.0"
  },
  "devDependencies": {
    "angular-mocks": "~1.0.7",
    "angular-scenario": "~1.0.7"
  },
  "resolutions": {
    "jquery": "~1.8.3",
    "angular": "1.2.1",
    "bootstrap": "~2.3.1"
  }
}

2 个答案:

答案 0 :(得分:2)

我们在这里遇到同样的问题 - 似乎在安装时使用空缓存和空bower.json目录在bower_components内定义分辨率时,包将安装到bower_components/package/package-version中,而如果您在安装期间以交互方式选择分辨率,然后将其安装到bower_components/package中 - 因此,如果您遇到该问题,请清理缓存(例如bower cache clean),删除已安装的组件(例如rm -rf bower_components/)并从resolutions然后bower.json移除bower install

答案 1 :(得分:1)

我有同样的问题。我不得不通过每个依赖项并单独安装它,检查它的版本,然后在被问到时解决它的分辨率。一旦它工作,并没有把文件夹与包版本号,然后我保存bower.json与正确的版本和分辨率(再次,当被要求)。它对我有用,现在所有的bower依赖项都是版本化的,没有“*”或“latest”,有些甚至没有版本开头的“〜”。

希望这可以帮助您和每个人都面临这个问题。