如何在 Git 仓库中包含 Composer 依赖项
How to include Composer dependencies in a Git repo
在使用像 Silverstripe 这样的框架创建网站时,我经常想使用像 gridfieldextensions 和 lumberjack 这样的辅助模块。
因此我使用 composer require
添加依赖项。
然而,当我按照我的常规开发工作流程并使用 git add -A
将模块添加到存储库而不是将代码添加到存储库时,我得到了对它的引用。
当我尝试在其他地方克隆站点时(使用 Jenkins 或其他开发人员),这会导致问题。 git clone
或 git pull
留下一个空目录。
我通过删除模块的 .git
目录并添加所有文件来解决这个问题。
有更好的方法吗?使用 git submodule
是一个选项吗?
我在某个地方找到了一个很好的 .gitignore 文件,它忽略了所有内容,我必须告诉它包含我的项目的自定义模块。就像:
# ignore everything...
/*
# ...but
!/.htaccess
!/.gitignore
!/composer.json
!/composer.lock
!/Capfile
!/Gemfile
!/favicon.ico
!/touch-icon-*
!/mysite
!/some-module
#...other modules
# theme stuff
!/themes/
**/.sass-cache
**/node_modules
!**/node_modules/_manifest_exclude
#no assets in general, but /assets/.htaccess
!/assets
/assets/*
!assets/.htaccess
正如 FinBoWa 所说,您的项目中需要 composer.json 和 composer.lock 文件,并且 运行
composer install
在另一台机器上,它将安装保存在该机器上 composer.lock 文件中的版本的软件包
composer install --no-dev
只会安装 "normal" 要求,不会 dev-requirements 像 phpunit 或其他你只需要用于开发或测试而不是上线的东西
composer install --no-dev -o
还将优化 (-o) 自动加载程序,因此它会更快一些。
composer update
将更新您的包,这可能会产生有趣的副作用并破坏您的网站。所以慎重使用,事后测试。
composer update silverstripe/framework
只会更新那个包,最后
composer update silverstripe/*
将更新供应商 silverstripe 的所有包(例如框架和 cms 包)
另请参阅:
在使用像 Silverstripe 这样的框架创建网站时,我经常想使用像 gridfieldextensions 和 lumberjack 这样的辅助模块。
因此我使用 composer require
添加依赖项。
然而,当我按照我的常规开发工作流程并使用 git add -A
将模块添加到存储库而不是将代码添加到存储库时,我得到了对它的引用。
当我尝试在其他地方克隆站点时(使用 Jenkins 或其他开发人员),这会导致问题。 git clone
或 git pull
留下一个空目录。
我通过删除模块的 .git
目录并添加所有文件来解决这个问题。
有更好的方法吗?使用 git submodule
是一个选项吗?
我在某个地方找到了一个很好的 .gitignore 文件,它忽略了所有内容,我必须告诉它包含我的项目的自定义模块。就像:
# ignore everything...
/*
# ...but
!/.htaccess
!/.gitignore
!/composer.json
!/composer.lock
!/Capfile
!/Gemfile
!/favicon.ico
!/touch-icon-*
!/mysite
!/some-module
#...other modules
# theme stuff
!/themes/
**/.sass-cache
**/node_modules
!**/node_modules/_manifest_exclude
#no assets in general, but /assets/.htaccess
!/assets
/assets/*
!assets/.htaccess
正如 FinBoWa 所说,您的项目中需要 composer.json 和 composer.lock 文件,并且 运行
composer install
在另一台机器上,它将安装保存在该机器上 composer.lock 文件中的版本的软件包
composer install --no-dev
只会安装 "normal" 要求,不会 dev-requirements 像 phpunit 或其他你只需要用于开发或测试而不是上线的东西
composer install --no-dev -o
还将优化 (-o) 自动加载程序,因此它会更快一些。
composer update
将更新您的包,这可能会产生有趣的副作用并破坏您的网站。所以慎重使用,事后测试。
composer update silverstripe/framework
只会更新那个包,最后
composer update silverstripe/*
将更新供应商 silverstripe 的所有包(例如框架和 cms 包)
另请参阅: