包管理器
好处:
-
方便取用别人已经写好的代码
-
管理包之前的依赖关系
第一点很明显了:你不会为每个项目都写一个 jQuery、React 这样的东西,而是直接使用别人已经写好的。传统做法是:去官方网站下载对应的 js 文件,然后放到自己项目的对应路径下,比如 /assets/js/
。而现在有了 npm 和 yarn 这样的东西,99.9999 % 的开放获取的包都在一个集中存放的地方,方便了查找和下载。就好比原来你要到各处去下载软件,现在有了 360 软件管家,只需要在这里搜索和下载就好了。少了很多时间。同时也少了安全风险,下载的东西都不会携带病毒。
第二点其实是第一点的发展版。因为大家写的包都放在这里了。如果我要写一个新的包,里面的一个小程序正好是别人已经写好的,所以我就拿来用了。这样就是我的包对别人的包有了依赖关系。一个大型的库(包)这个依赖关系可能很复杂,比如:依赖于几十个别的包,同时,每个包都要求对应一个确定的版本(因为版本相差太大,可能会有API不兼容的情况)。这样,如果人工去下载每一个依赖的包,将是一个指数级的任务:A 包依赖于 B 和 C,同时 C 依赖于 D 和 E,B 又依赖于 F、G、H,D 又依赖于 I、J、K……如此,基本是人类无法完成的任务。当然,在没有包管理器之前,也没有人写包会依赖于这么多其它人的包,结果当然就是重复劳动:每个包都把一些常用的功能自己实现一遍。
常见的包管理器:
Linux :apt-get php:composer node.js:npm Java:maven
composer使用
以下以monolog为例:
声明依赖
在项目目录下创建一个composer.json文件,指明依赖,比如,你的项目依赖 monolog:
{ "require": { "monolog/monolog":"1.2.*"}}
如果不需要使用https,可以这么写,以解决有时候因为https造成的问题:
{ "require": { "monolog/monolog":"1.2.*"}, "config": { "secure-http":false}}
安装依赖
安装依赖非常简单,只需在项目目录下运行:
composer install
如果没有全局安装的话,则运行:
php composer.phar install
更新全部的包(谨慎使用):
composer update
注意:使用composer install或者composer update命令将会更新所有的扩展包,项目中使用需谨慎!!!
若只安装指定的包推荐在命令行使用:
composer require monolog/monolog
进行安装。
如果需要指定版本:
composer require "monolog/monolog:1.2.*"
更新某个包:
composer update monolog/monolog
移除某个包:
composer remove monolog/monolog
如果手动更新了composer.json需要更新autoload:
compose rdump-autoload