我有一个 Symfony 2.1 项目,通过 Composer 安装了额外的 bundle 。我想将其部署到我的生产服务器,但我想知道是否需要更改 composer.json
文件中的任何内容。这是我当前的文件内容:
{
"name": "symfony/framework-standard-edition",
"description": "The \"Symfony Standard Edition\" distribution",
"autoload": {
"psr-0": { "": "src/" }
},
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.1.1",
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.0.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.1.*",
"symfony/monolog-bundle": "2.1.*",
"sensio/distribution-bundle": "2.1.*",
"sensio/framework-extra-bundle": "2.1.*",
"sensio/generator-bundle": "2.1.*",
"jms/security-extra-bundle": "1.2.*",
"jms/di-extra-bundle": "1.1.*",
"friendsofsymfony/user-bundle": "*",
"knplabs/knp-paginator-bundle": "dev-master",
"ornicar/gravatar-bundle": "dev-master",
"liip/url-auto-converter-bundle": "dev-master"
},
"scripts": {
"post-install-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
],
"post-update-cmd": [
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets",
"Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile"
]
},
"config": {
"bin-dir": "bin"
},
"minimum-stability": "dev",
"extra": {
"symfony-app-dir": "app",
"symfony-web-dir": "web"
}
}
我应该更改最低稳定性
设置吗?
我是否应该将每个要求修复为单个版本,不带通配符或“dev-master”?
我应该搜索 http://packagist.org/每个依赖项的最后一个稳定版本?
最佳答案
我认为最重要的是你的composer.lock,而不是composer.json。
在测试服务器上部署您的应用程序,phpcomposer.phar install
,然后运行测试以确保一切正常。如果确实可以的话,就和composer.lock一起部署在生产服务器上即可。
这样您的部门将与您的测试服务器完全相同。如果您有多个前端服务器,这也很有用,composer.lock 将确保每个人都使用完全相同的代码。
你说
Should I fix every requirement to a single version, without wildcard, or "dev-master"?
这就是composer.lock“修复”一切的作用。 composer.json 用于声明依赖项并处理版本之间可能的不兼容性。默认情况下,您应该坚持使用稳定版本,除非您需要开发分支中的一些奇特的新功能,或者尚未合并的错误修复。
因此,您应该对composer.lock进行版本控制,这样更容易自动部署。
关于symfony - 我的composer.json 文件在生产环境中应该是什么样子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12370046/