bower一个强大的前端依赖包管理工具
在介绍之前,你必须的知道bower是基于nodejs开发的,所以你首先必须得有个nodejs环境,至于这么安装nodejs网上一大堆教程,对了使用bower还需要安装git,这里就不多说了。
####bower带来的好处
假如你有一个项目,里面需要用到了JQuery在正常情况下我们需要到jQuery官方网站下载库,这样的话,每次jquery更新,我们又要到jQuery官方下载,那这样的话就很麻烦了,如果有一款工具能够输入一个命令让我们选择要下载的版本,并且如果想把我们项目里面的所有库更新到最新版也只需要输入一个命令那是不是很方便,bower的另外一个好处就是如果你安装bootstrap那么它会自动下载jquery,因为bootstrap依赖了jquery,简单的来说只要我们下载的那个库依赖了另外的库那么bower会自动帮我们下载依赖的库,bower就是这么强大。
###bower的安装
npm install -g bower 表示安装到全局环境
###bower的使用
1. 通过bower下载库
bower install (包的名称如:jquery)[#版本如:#1.7] 版本可选,如果没有写,默认下载最新版
如:bower install bootstrap#2.2
2. 如果需要更新所以的库,我们可以输入以下命令
bower update
如果需要生成一个你下载个包的所以信息,比如你在一个团队中,你想让其他人知道你都用了哪些库,并且它们的版本是多少,那么我们可以通过以下命令来完成。
我们需要先初始化一个包描述。它会在你的当前执行环境目录中创建一个bower.json的目录
`bower init -y`
然后通过
`bower install jquery --save`
它会在bower.json文件中加入jquery的版本信息,如果你想添加多个可以通过空格bower install jquery bootstrap less --save
以下是bower.json文件的内容
{
"name": "down",
"authors": [
"xxxxxxxx"
],
"description": "",
"main": "",
"moduleType": [],
"license": "MIT",
"homepage": "",
"private": true,
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests"
],
"dependencies": {
"bootstrap": "^3.3.6",
"less": "^2.6.1",
"jquery": "^2.2.2"
}
}
当然如果你是nodejs新手或许你会有些茫然,因为这里并不是一个nodejs基础教程,如果你想了解想学node的话还需要到网络中学习。
bower除了这些好处以为,还有一些更加强大的功能,那就需要大家去发现了,我这里就不再介绍了,毕竟我也是刚刚开始学习node
------------------------------------------------------分割线---------------------------------------
bower与npm的关系
安装bower需要通过npm来安装
bower与npm的区别:
1. 在之前的npm版本中,它不能共享依赖的代码,也是就说,在以前的npm版本中,如果你下载了一个bootstrap,因为bootstrap是依赖jquery的,所以它会把jquery也下载下来,但是如果你的另外一个库也用到了jquery,那么它也会去下载一个jquery,这样的话,代码就重复了。
它们的结构就像这样:
bootstrap\jQuery
xxxxxxxxx\jQuery
它们重复了对吧,不过好像在npm的最新版本中解决了这个问题。
2. npm 会将开发环境一起下载下来,bower 只会下载 编译后的前度模块。
3. NPM主要运用于Node.js项目的内部依赖包管理,安装的模块位于项目根目录下的node_modules文件夹内。而Bower大部分情况下用于前端开发,对于CSS/JS/模板等内容进行依赖管理,依赖的下载目录结构可以自定义。 -- 本段内容是在网上找到的。
所谓的自定义目录结构的意思是说,你在那个文件目录打开的bower,那么它就会在那个文件下,下载你需要的包,而npm就不支持这个。
总结:我们可以简单的来理解npm是用来管理nodejs模块的也就是包,而bower是用来管理我们前端库的。
bower一个强大的前端依赖包管理工具的更多相关文章
- go依赖包管理工具vendor基础
go依赖包管理工具vendor基础 vendor是go的依赖包管理工具,主要用于管理项目中使用到的一些依赖. 它将项目依赖的包,特指外部包,复制到当前工程下的vendor目录下,这样go build的 ...
- go 依赖包管理工具gb安装报错
尝试了下gb工具,发现有个问题: [root@etcd1 test]# go get github.com/constabulary/gb/... /home/gopath/src/github.co ...
- Linux之包管理工具总结[RPM/DPKG]-[YUM/APT]
0.关键词解释 RPM:Red Hat Package Manager(原名),RPM Package Manager(现名,递归缩写,类似于GNU的命名); 解释:RPM软件包管理器 YUM:Yel ...
- Golang学习--包管理工具glide
上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...
- k8s包管理工具helm - 介绍和安装
目录 1.Kubernetes 应用部署的挑战 2.Helm 是什么 3.Helm 组件及相关术语 4.Helm 工作原理 5.Helm 安装 5.1 客户端安装 5.2 安装服务端 Tiller 5 ...
- glide包管理工具
上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...
- Go的包管理工具(一)
在前面转载了系列文章:Golang 需要避免踩的 50 个坑,总得来说阅读量都挺大.今天这篇文章,咱们一起聊聊Go的依赖包管理工具. 背景 每一门语言都有其依赖的生态,当我们使用Java语言的时候,使 ...
- MacOS上的包管理工具
众所周知,Linux世界中存在着如apt-get.yum等强大而简单的包管理工具,而在Macos中同样存在类似的东西. 当前比较流行的主要有如下两种: 1.Homebrew(推荐):其官网地址brew ...
- $python包管理工具pip的安装和使用
pip是python的一个非常好用的包管理工具,可以用来很方便地安装和管理各种三方库,本文对其基本用法进行介绍. 安装pip Windows系统上安装 python 2.7.9及以上版本的window ...
随机推荐
- 词频统计web
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
- mysql入门安装遇到问题_2016-10-28
1. brew安装完mysql之后直接输入mysql -u root -p 显示 can't connect to mysql server through socket, 后来问题应该是server ...
- wpf 报错: 在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh”。
今天修改Bug的时候遇到一个问题: datagrid 设置了双击事件,双击弹出一个窗口,在多次点击后报错:在 AddNew 或 EditItem 事务过程中不允许“DeferRefresh” 网上查了 ...
- 各廠商ERP系統架構圖連結 (ERP流程圖)(轉)
各廠商ERP系統架構圖連結 (ERP流程圖) 資料來源 Google圖片搜尋ERP整理而來 資通電腦 ArgoERP 資通電腦 Oracle ERP 鼎新電腦 Workflow ERP鼎新電腦 S ...
- 网上搜集了点资料,学web的人互相分享共同进步吧(php编码的好习惯必须养成)
网上搜集了点资料,学web的人互相分享共同进步吧 一.优秀的代码应该是什么样的? 优秀的PHP代码应该是结构化的.大段的代码应该被分割整理成一个个函数或方法,而那些不起眼的小段代码则应该加上注释,以便 ...
- springMVC静态文件访问
web.xml文件 <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xs ...
- Hibernate Id Generator and Primary Key
Use automate id by hibernate: If you want the tables' id be created automation. How to do it? When u ...
- java 中 finally里面写了return 会发生什么?
boolean test() throws Exception { boolean ret = true; try { int b = 12; int c; for (int i = 1; i > ...
- cocoapods的时候出现的问题 _OBJC_CLASS_$_XXX
最新的cocoapod导入xmpp的时候,会出现循环依赖,所以撸主选择了手动导入. 一开始还用的挺开心的,后来,使用cocoapods导入其他的框架,发现调用的时候总是报错. Undefined sy ...
- java HashMap那点事
集合类的整体架构 比较重要的集合类图如下: 有序否 允许元素重复否 Collection 否 是 List 是 是 Set AbstractSet 否 否 HashSet TreeSet 是(用二 ...