7

我有一个 Symfony 2.1 项目,通过 composer 安装了额外的包。我想将它部署到我的生产服务器,但我想知道是否需要更改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"
    }
}

我应该更改minimum-stability设置吗?

我应该将每个要求都修复为单个版本,不使用通配符还是“dev-master”?

我应该在http://packagist.org/上搜索每个依赖项的最后一个稳定版本吗?

4

1 回答 1

11

我认为最重要的是您的 composer.lock,而不是 composer.json。

在测试服务器上部署您的应用程序php composer.phar install,然后运行测试以确保一切正常。如果确实没问题,只需与 composer.lock 一起部署在生产服务器上。

这样,您的部门将与您的测试服务器完全相同。如果您有多个前端服务器,这也很有用,composer.lock 将确保每个人都使用完全相同的代码。

你说

我应该将每个要求都修复为单个版本,不使用通配符还是“dev-master”?

这是 composer.lock “修复”一切的作用。composer.json 是关于声明依赖关系,并处理版本之间可能的不兼容性。默认情况下,您应该坚持使用稳定版本,除非您在开发分支中需要一些花哨的新功能,或者尚未合并的错误修复。

因此,您应该对 composer.lock 进行版本控制,这样更容易自动部署。

于 2012-09-11T13:32:11.000 回答