Symfony2 - 创建自己的供应商包 - 项目和git策略

ex3*_*x3v 78 php git bundle symfony

我们正在考虑创建我们自己common的实体映射和服务包,以便在几个单独的应用程序中使用.捆绑包应该易于修改,运行,包含和测试.我知道构建捆绑包的最佳实践,但我不知道git在开发时使用什么策略.

我们应该创建commonbundle作为一个整体项目并将整个存储库提交给我们的git服务器,还是最好只为commonbundle的root启动源代码控制并仅推送其内容?我在捆绑包中看到了这种方法github,但我不知道以这种方式开发捆绑包的简单方便.

VBe*_*Bee 175

创建一个新的空symfony项目

php composer.phar create-project symfony/framework-standard-edition demo/ 2.4.1
cd demo
Run Code Online (Sandbox Code Playgroud)

生成一个新包

(例如src/Company/DemoBundle)

php app/console generate:bundle
cd src/Company/DemoBundle/
Run Code Online (Sandbox Code Playgroud)

在中创建你的github存储库 src/Company/DemoBundle

git init
touch README.md
git add .
git commit -m "initial commit"
git remote add origin https://github.com/YourAccount/DemoBundle.git
git push -u origin master
Run Code Online (Sandbox Code Playgroud)

添加composer.json文件

src/Company/DemoBundle/composer.json:

{
    "name" : "company/demobundle",
    "description" : "A demo bundle",
    "type" : "symfony-bundle",
    "authors" : [{
        "name" : "demo",
        "email" : "demo@company.com"
    }],
    "keywords" : [
        "demo bundle"
    ],
    "license" : [
        "MIT"
    ],
    "require" : {
    },
    "autoload" : {
        "psr-0" : {
            "Company\\DemoBundle" : ""
        }
    },
    "target-dir" : "Company/DemoBundle",
    "repositories" : [{
    }],
    "extra" : {
    "branch-alias" : {
            "dev-master" : "some_version-dev"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您拥有了捆绑包的基本结构

在另一个项目中使用它

composer.json:

    [...]
    "require" : {
        [...]
        "company/demobundle" : "dev-master"
    },
    "repositories" : [{
        "type" : "vcs",
        "url" : "https://github.com/Company/DemoBundle.git"
    }],
    [...]
Run Code Online (Sandbox Code Playgroud)

做:

curl -sS https://getcomposer.org/installer | php
php composer.phar update company/demobundle
Run Code Online (Sandbox Code Playgroud)

应用程序/ AppKernel:

new Company\DemoBundle\CompanyDemoBundle(),
Run Code Online (Sandbox Code Playgroud)

在...上下功夫

  • 您可以在src/Company文件夹中克隆DemoBundle ,然后手动安装它
  • 你可以使用符号链接

结论

您可以在第一个项目中开发和测试捆绑包,并在第二个项目中将其与github和composer一起使用.

  • 编辑.我最喜欢的选择是符号链接选项. (3认同)
  • 只是一个拼写错误的composer.phat应该是composer.phar (3认同)

flo*_*000 16

需要知道的一点是,您可以从/ vendor提交您的repo.实际上,作曲家为引用包的回购的每个包(或包)创建第二个名为"composer"的远程,以便您可以在工作环境中处理它.因此,最佳做法是在您的composer.json中为您的所有项目注册您的包,并从您的/vendor/MyCompany/MyBundle任何项目中提交.

作为证明,只需git remote -v从供应商的任何捆绑包中运行即可.

不好的做法是将您的捆绑包视为一个单独的项目,并使用符号链接.这种不良做法的主要原因是您无法使用捆绑包声明依赖性.此外,您在部署项目时会遇到一些困难.

  • 在GitHub中创建一个新的空项目,用于存储您的包.在其中提交composer.json.你甚至可以提交一个非常简单的composer.json,只包含你的包的名称和描述.回到你的项目中,向你的新包添加一个需求并进行`composer update`.现在,您应该在供应商文件夹中看到空包,并且可以在其中工作.如果您希望捆绑包是公共的,请将其添加到Packagist. (5认同)