使用bower可能会遇到的5个问题

bower是业界使用率比较高的前端组件管理工具,基本上相似于npm,但解决了项目中同一个库的引入多个版本的问题。你们知道,同一个库版本并存这对于node来讲很正常,但对于浏览器来讲几乎是不可接受的。如下是咱们使用bower遇到的5个问题和咱们的取舍与选择。前端

1、组件版本用master 仍是 tag?

新组件在快速迭代、小范围使用的状况下推荐用master
其余状况使用tag,上面代码段里的v0.0.5就是tag的版本号。node

{                                       
  ...
  "dependencies": {
    "pop": "git@git.qima-inc.com:bower_components/pop.git#v0.0.5",
    "loader": "git@git.qima-inc.com:bower_components/loader.git#v1.1.0",
    "youzanjsbridge": "git@git.qima-inc.com:bower_components/youzanjsbridge.git#v0.0.3"
    ...
  }
  ...
}

2、我要稳定:发现版本不一致怎么办?

图片描述

能够在数字前面加!,让这个选择固定到bower.json里,下次别人执行bower update 就会直接选择你选定的版本了。git

图片描述

以下图:再一次执行bower udpate 就自动选择了以前固定下来的版本了。shell

图片描述

3、如何把全部组件更新到最新版?

能够安装个工具 bower-updatenpm

npm install bower-update -g

在工程目录里执行bower-update后会挨个让你确认要不要把某个组件升级到最新版本,最后你的选择会被写到bower.json里。json

clipboard.png

4、版本号必须以 v 打头么?

经测试,bower对tag的版本号里开头的 v 是作了自适应的,好比:segmentfault

假设
远程服务器上有2个版本的tag,分布是 v0.0.1 和 0.0.2
那么本地bower.json里
若是要使用0.0.1版本,不管指定版本号为“#0.0.1” 仍是 “#v0.0.1”
若是要使用0.0.2版本,不管指定版本号为“#0.0.2” 仍是 “#v0.0.2”
都是能够的而且能下到正确的代码浏览器

5、bower组件代码的升级迭代如何管理

咱们的经验是:
一、组件尽可能拆分地细粒度,一个组件或者一类组件放在一个git仓库里 服务器

二、相近范畴和功能的组件在一个git仓库里 并发

三、每一个git仓库由一两我的主要维护(在gitlab里的话就是给他设master权限),其余人要改代码,须要提交pull request,由负责维护的人审查代码,合并代码并拉新的tag出来

咱们发现 gitlab 里 develop 权限的用户也能本身拉 tag(要命的是咱们还没发现如何禁止这个操做),解决有人提了一个分支上来,没等维护的人合并就基于这个分支拉了个tag出来,本身很欢快的用起来了。实际上这么玩会有很大的坑的,因此须要团队内部须要作一个约定:只有维护的人才能够拉tag

补充下为何说随便拉tag会有坑——举个例子:项目X是A在维护的,B提交了一个分支并发起一个pull request,没等A接受这个pull request拉出新tag,B直接基于本身的hotfix拉的tag,其余人依赖这个新tag提供的接口写了些代码。而后A以为B的这个pull request是有问题的,没有接受,因而极可能后面从master新拉的 tag 不包含这部分接口。因而就出现了 0.1.2 版本不兼容 0.1.1 版本的情形。

本文首发于个人
SegmentFault专栏:http://segmentfault.com/a/1190000004189341
我的技术博客:http://delai.me/code/bower/转载请注明出处

相关文章
相关标签/搜索