几个重要的『包/组件』管理工具
原文链接 http://inskyline.com/mac/2015/12/19/a-mac-%E5%87%A0%E4%B8%AA%E9%87%8D%E8%A6%81%E5%8C%85%E7%AE%A1%E7%90%86%E5%B7%A5%E5%85%B7.html
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。
在 Mac 下开发,不论是安装软件,以及程序引入包或者其他组件都可以通过命令化的管理工具完成。比如说安装软件可以用 Homebrew
,比如说管理前端资源文件可以用 Bower
,以及 node 的重要管理工具 npm
。
Homebrew
Homebrew 简称 brew
,是 Mac OSX 上的软件包管理工具,能在 Mac 中方便的安装软件或者卸载软件。官方说 OS X 不可或缺的套件管理器。
安装
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
前提是必须先安装 ruby
。 Mac 下默认是安装 ruby。所以可以直接用这条命令安装 Homebrew 了。
特点
- 使用简单,例如要安装 wget
#安装 wget
$ brew install wget
#卸载
brew uninstall wget
#搜索
brew search wget
#更新
brew update
#列表
brew list
- Homebrew 会将套件安装到独立目录,并将文件软链接至
/usr/local
RubyGems
RubyGems 是一个方便而强大的 Ruby
程序包管理器,Ruby 的第三方插件是用 gem
方式来管理,非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库。
PS:千万不要由于是 Ruby 包管理器而忽视它,Mac 下好多管理工具是用 Ruby 开发,如 Homebrew 。即使你丝毫不懂 Ruby 也不妨碍你安装它,好好的使用它,会给你很多使用快感的😄
安装
在 https://rubygems.org/pages/download#formats下载
点击上面链接进入到官网,从顶部的链接下载压缩包;
解压缩到指定文件夹,并通过
cd
指令进入到该文件夹;ruby setup.rb
使用该命令安装(可能需要管理员权限,使用sudo
)
安装完成后将修改镜像包
$ gem sources --add https://ruby.taobao.org/ --remove https://rubygems.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
原镜像包 Rubygems 官方网站被 Wall 了,导致 Ruby 程序员在线安装软件 `gem 包的时候无法顺利进行。
PS:之前 ruby.taobao.org 并没有启用 https
圈内流传着一句话:
Homebrew 使 OS X 更完整。用 gem 来安装您的 gems 用 brew 来搞定它们的依赖包。
特点
能远程安装包,包之间依赖关系的管理,简单可靠的卸载,查询机制,能查询本地和远程服务器的包信息,能保持一个包的不同版本,基于 Web 的查看接口,能查看你安装的 gem 的信息。
用法
- 查看 RubyGems 软件的版本
gem -v
- 更新升级 RubyGems 软件自身
gem update --system
- 更新所有已安装的 gem 包
$ gem update
- 更新指定的 gem 包
$ gem update [gemname]
- 安装指定 gem 包,程序先从本机查找 gem 包并安装,如果本地没有,则从远程 gem 安装。
gem install [gemname]
- 仅从本机安装 gem 包
gem install -l [gemname]
NPM
NPM 的全称是Node Package Manager ,是一个 NodeJS 包管理和分发工具,已经成为了非官方的发布 Node 模块(包)的标准.
安装
在 nodejs 官网 下载 ,完成直接安装。
查看版本号:
npm -v
用法
- 全局安装命令为
$npm install -g moduleName
- 查看包的依赖关系
npm view moudleName dependencies
- 查看包的源文件地址
npm view moduleName repository.url
- 更新 node 模块
npm update moduleName
- 卸载 node 模块
npm uninstall moudleName
- 搜索包
$ npm search packageName
- 创建一个 package.json 文件,包括名称、版本、作者这些信息等
npm init
Bower
Bower 是 twitter 推出的一款包管理工具,基于 nodejs 的模块化思想,把功能分散到各个模块中,让模块和模块之间存在联系,通过 Bower 来管理模块间的这种联系。
安装 Bower 的先决条件是已经安装了 nodejs
和 Git
(bower 从远程 git 仓库获取代码包)。
安装
npm install -g bower
用法
- 安装包
bower install <package>
其中包的形式的可以是 GitHub 简写、一个 git 地址、一个 url 或者其他。
例如:
# 安装 jquery
$ bower install jquery
# GitHub shorthand
$ bower install desandro/masonry
# Git endpoint
$ bower install git://github.com/user/package.git
- 搜索包
$ bower search
$ bower search <name>
- 保存依赖
# install package and add it to bower.json dependencies
$ bower install <package> --save
- 卸载包
$ bower uninstall <name> [<name> ..] [<options>]
uninstall 选项:
-S,–save
:从项目的 bower.json
文件中移除卸载的包的依赖(更新dependencies)
-D,–save-dev
:从项目的 bower.json
文件中移除卸载的包的依赖(更新devDependencies)
- bower 初始化
bower init
生成一个 bower.json
文件,用来保存该项目的配置.
➜ demo bower init
? name mytest
? description this is a package
? main file itest
? what types of modules does this package expose? (Press <space> to select)
❯◯ amd
◯ es6
◯ globals
◯ node
◯ yui
? what types of modules does this package expose?
? keywords test
? authors 白若水 <meng_1999@qq.com>
? license MIT
? homepage
? set currently installed components as dependencies? Yes
? add commonly ignored files to ignore list? Yes
? would you like to mark this package as private which prevents it from being accidentally published to the registry? Yes
{
name: 'mytest',
authors: [
'白若水 <meng@gmail.com>'
],
description: 'this is a package',
main: 'itest',
moduleType: [],
keywords: [
'test'
],
license: 'MIT',
homepage: '',
private: true,
ignore: [
'**/.*',
'node_modules',
'bower_components',
'test',
'tests'
]
}
? Looks good? Yes
┌──────────────────────────────────────────┐
│ Update available: 1.7.1 (current: 1.6.8) │
│ Run npm install -g bower to update. │
└──────────────────────────────────────────┘
➜ demo
总结
包管理工具一般有以下的功能:
注册机制:每个包需要确定唯一的 ID 使得搜索和下载的时候能够正确匹配,所以包管理工具需要维护注册信息,可以依赖其他平台。
文件存储:确定文件存放的位置,下载的时候可以找到,当然这个地址在网络上是可访问的。
上传下载:这是工具的主要功能,能提高包使用的便利性。比如想用 jquery 只需要 install 一下就可以了,不用到处找下载。上传并不是必备的,根据文件存储的位置而定,但需要有一定的机制保障。
依赖分析:这也是包管理工具主要解决的问题之一,既然包之间是有联系的,那么下载的时候就需要处理他们之间的依赖。下载一个包的时候也需要下载依赖的包。