# composer install 以 composer.lock 为依据
# 存在 composer.lock 时,手动修改 composer.json 之后
# 1. 重新 composer install 会产生警告 并不会更新依赖 (⚠️:Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. Run update to update them.)
# 2. composer update 则会重新加载依赖并重新生成 composer.lock 文件
# 指定为开发所需要的依赖 生产环境不需要的依赖
composer require --dev
# 生产环境中不加载开发依赖
composer install --no-dev
# 集成构建时(包括构建 生产代码 与 测试代码)
# 应该根据 .composer 来缓存已安装的依赖
# 上一版本 composer.lock
composer.lock.pre-version
# 根据lock文件的上一版本与当前版本的比较,来判断是否重新下载缓存依赖
`
[[ ! -f composer.lock.prev || ! -d vendor || $(md5sum composer.lock.prev | awk '{print $1}') != $(md5sum composer.lock | awk '{print $1}') ]] &&
composer install --no-dev && cp -f composer.lock composer.lock.prev && echo 'installed depend' ||
echo 'no install depend, use cached'
`
# 对以上代码的解释:
# 假如没有上一版本lock,或者与上一版本lock与当前lock md5不同,重新安装依赖 并 更新composer.lock.prev为当前的composer.lock文件
# 即使没有安装依赖也不会报错,因为用了 `|| echo`, 这样的话最终都不会非零退出
# (重要):假如没有 composer.lock 会重新安装依赖,报错但不会退出。
# (重要):但是!** 因为版本控制中没有加入lock文件,所以每次都将重新安装依赖 而且每次很慢(因为需要重新确定依赖版本并生成lock文件) **
# 1. 假如介意每次都安装依赖 请添加 composer.lock 到版本库 或者 修改看情况将 composer.json 作为依据(不推荐)
# 2. 或者没有 comoposer.lock 时异常情况,那么添加以下代码 没有 composer.lock 将报错非0退出
`
[[ -f composer.lock ]] || (echo 'Error! composer.lock dont exists ! ' && exit 1)
`
Last active
December 5, 2017 05:27
-
-
Save sursir/c7aa865db04625d46eb82c06e2d3391d to your computer and use it in GitHub Desktop.
php composer
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment