资讯专栏INFORMATION COLUMN

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

singerye / 891人阅读

摘要:是业界使用率比较高的前端组件管理工具,基本上类似于,但解决了项目中同一个库的引入多个版本的问题。然后觉得的这个是有问题的,没有接受,于是很可能后面从新拉的不包含这部分接口。

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

一、组件版本用master 还是 tag?

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

{                                       
  ...
  "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"
    ...
  }
  ...
}
二、我要稳定:发现版本不一致怎么办?

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

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

三、如何把所有组件更新到最新版?

可以安装个工具 bower-update

npm install bower-update -g

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

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

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

假设
远程服务器上有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”
都是可以的并且能下到正确的代码

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

我们的经验是:
1、组件尽量拆分地细粒度,一个组件或者一类组件放在一个git仓库里

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

3、每个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/
转载请注明出处

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/78358.html

相关文章

  • 关于yo+gulp+bower一起构建应用时遇到一些问题总结

    摘要:问题一在中配置开发测试时用得库,无法在运行时注入。解决办法分如下几步,在自己的里直接将变量重写,指向正确的相对位置即可。 问题一、在bower中配置开发测试时用得库,无法在运行时注入。首先是打算有一些测试时候用到的库,放到bower.json文件的devDependencies里面,但是运行之后怎么也找不到对应的文件,也就是gulp无法进行注入,而加到正式的库里面就能找到解决办法参看了...

    cnsworder 评论0 收藏0
  • Java™ 教程(并发活性)

    并发活性 并发应用程序及时执行的能力被称为其活性,本节描述了最常见的活性问题,死锁,并继续简要描述其他两个活性问题,饥饿和活锁。 死锁 死锁描述了两个或多个线程永远被阻塞,等待彼此的情况,这是一个例子。 Alphonse和Gaston是朋友,是礼貌的忠实信徒,礼貌的一个严格规则是,当你向朋友鞠躬时,你必须一直鞠躬,直到你的朋友有机会还礼,不幸的是,这条规则没有考虑到两个朋友可能同时互相鞠躬的可能性...

    KaltZK 评论0 收藏0
  • MEAN.js 文档

    摘要:感谢使用框架本文档涵盖构建应用所需的基础知识。用于数据校验的组件及相关文件在此目录进行管理。除了自定义中间件外,还是用了诸多第三方的中间件,它们是五测试我们使用组件对服务端代码进行测试。识别当前导航从已有导航中删除给定标识的导航配置。 本文同步至个人博客 MEAN.js 文档,转载请注明出处。 Overview 感谢使用 MEAN.js 框架! 本文档涵盖构建 MEAN 应用所需的基础...

    Hydrogen 评论0 收藏0
  • 创建 Web 前端开发环境

    摘要:前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础。是目前最为流行的源代码管理网站。安装在继续学习前,你需要先将命令行安装到全局环境中。 Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础。 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Gru...

    Sanchi 评论0 收藏0
  • 创建 Web 前端开发环境

    摘要:前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础。是目前最为流行的源代码管理网站。安装在继续学习前,你需要先将命令行安装到全局环境中。 Web 前端开发涉及多种工具,这里将常用工具的安装和配置进行说明,提供了详细的说明,为后继的开发创建一个坚实的基础。 本文介绍的工具有:NodeJS, NPM, Bower, Git 和 Gru...

    2i18ns 评论0 收藏0

发表评论

0条评论

singerye

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<