使用Modman进行多环境Magento开发

使用Modman进行多环境Magento开发

2014年3月20日发布 in 发展历程
Magento Commerce中的小部件
2014年3月4日
PayPal令牌化扩展现在具有更广泛的支持
2014年4月1日

Note: 莫德曼, the 至 ol that is the subject of this 文章 , is for *nix or Mac OS X 上 ly.

作为一家代理商,我们在Classy Llama的大部分开发工作通常都是在独立的环境中完成的。一个站点,一个代码库,一个VCS存储库。即使重用了特定功能,也倾向于将其直接从A点复制到B点,并在此过程中进行重新设计。

如果你’作为Magento开发人员,版本控制工作流程同样简单明了的机会要好于平均水平。 (因为在代理商的背景下工作,或者为一家企业管理一个或多个Magento网站,机会要比平均机会要好。) 产品 开发商–像是那些创造了Magento扩展主机的英雄,使我们的生活更轻松–知道当您将工作流程迅速变得更加复杂时’重新开发必须跨多个站点甚至跨平台多个版本运行的功能。在创建可分发扩展时,您的最终可交付成果就是该扩展’的代码,仅此而已。但是您仍然必须在可用的Magento代码库中进行开发– 实际上,假设您希望它与多个Magento版本兼容。

 

即使产品开发不是您的专长,您也可能会发现自己对版本控制工作流也有类似的需求。随着代理商的成熟,我们倾向于越来越重视打包功能带来的效率提升,’易于重用。如果你’作为内部开发人员,请设想一个场景,其中您管理两个不同的品牌站点,但需要同时为两个站点构建相同的功能,或者您的站点的2.0版本正在开发中,但是需要增加一些新颖的功能尽快。许多情况可能导致需要在不同的上下文中快速部署和测试一个扩展。

We 开发商can com e up with some embarrassingly half-baked solutions 至 challenges like this because we want 至 keep our focus 上 what we’re creating, 不 pesky issues like manageable workflow. 的good news is that such workflows can be dead simple when you equip yourself with the right 至 ol. And 在 this case, the right 至 ol is 莫德曼, a lightweight program created by Colin Mollenhour.

Note: 的focus of this 文章 is 上 version control workflow across 多 码 bases. It is 包含使代码更通用/可分发的技巧。

请注意第二点:本文还假定您 using version control 在 your 开发 ment. 如果你 是 n’。 。 。我们都在那里一次!唐 ’不要打自己刚开始使用VCS。在Classy Llama,我们使用 吉特 .

Using 莫德曼

让’深入了解并定义我们的方案。我们’重新开发一个有用的扩展,我们’ll call, unimaginatively, 我的店铺_UsefulExtension. And for whatever reason, it does 不 belong 至 上 e particular site, but must be tested 上 several. Our VCS repository will contain 上 ly the extension 码 :

。 。 。我们面临的挑战是在开发过程中如何使完整的Magento代码库与此代码保持同步。当然,我们的VCS本身使拥有多个正在运行的代码工作副本变得容易,但是使Magento和类似平台面临的特殊挑战是,所有这些文件都需要分布在整个主代码库中,而不是包含在一个文件中。地点。我们如何确保自己的代码被同时隔离以进行版本控制,并插入所有正确的位置,以便我们可以实际运行它?

我们也许可以通过创建一个细致的路径列表以解决我们的VCS来解决此问题,在这种情况下,我们的存储库根目录可以与Magento站点代码库本身的根目录重合。但这可能会使维护工作变得有些艰巨,并且总是有可能会意外提交一个不符合要求的文件。’t actually part of our 码 . (Not 至 mention that if the 码 base where you want your extension 部署ed is itself under version control, this option goes immediately out the window.) 莫德曼 has a better way.

莫德曼 takes 在 formation about the repository that contains your module (git and Subversion 是 supported) and takes care of both updating your local 复制 and merging its files 在 to the main 码 base.

的program was written specifically with Magento 在 mind, but it can be used for any platform with similar requirements. Visit the GitHub page for easy 在 stallation 在 structions:

//github.com/colinmollenhour/modman

一旦我们’ve taken care of 在 stalling 莫德曼, we need 至 prepare our extension 至 utilize it. This is as simple as adding a file called “modman”到我们的根目录,其中包含我们存储库中的文件/目录与其在Magento中各自位置之间的映射:

每行的左侧路径是相对于我们的存储库根目录的文件或目录的路径。正确的路径指示此文件或目录应在主代码库中复制到的位置。扩展结构和我们一样简单,它们方便地是相同的。

With the 莫德曼 file 在 placed and pushed 至 the repo, all that’s needed 在 our Magento 码 base is 至 在里面ialize 莫德曼 and kick off the 克隆/copy of our extension:

的above com mands result 在 the extension being 克隆d 在 to “MyShop_UsefulExtension”在一个特殊的目录中“.modman”。默认情况下,清单文件中指定的文件实际上是 符号链接 到主代码库中,而不是直接复制。(确保您遵循安装说明,并在Magento管理员中启用模板的符号链接。) This has two major advantages: First, already 部署ed files will stay 在 sync as you 开发 without the need for redeployment. And second, broken symlinks can easily be identified and removed 在 the event you delete files from your extension.

这里’从我们的Web根目录中查看:

的“init” and “clone”命令应在需要开发和/或测试扩展的每个代码库中运行。在工作并推动新更改时,请使用以下内容更新每个代码库:

的above will pull your latest changes from the repository and re-deploy files as specified 在 the “modman” manifest.

It’真的很简单。使用这些基本命令,您可以根据需要在许多上下文中顺利进行自包含扩展的开发。

莫德曼 has a few more useful tricks you’ll find it helpful 至 know. Additional com mands can be passed directly 至 吉特 or Subversion by 在 cluding them after the 莫德曼 com mand, such as the following, which 克隆s a specific 科 在里面ially:

You can also tell 莫德曼 至 perform the 部署ment of symlinks 在 to the main 码 base without bothering 至 更新 the extension working 复制 first by using the “deploy”命令。 (当您’刚刚添加了新的路径“modman” file.)

I mentioned above that 上 e benefit of using symlinks was easy 清洁-up of deleted module com ponents. 莫德曼 has a com mand specifically for this purpose: “clean”, which will find leftover symlinks from previous 部署ments and remove them.

在某些情况下,您可能希望将扩展文件直接复制到Magento代码库中,而不是进行符号链接。 (例如,作为在最终站点上安装最终扩展的便捷方法。)“–copy”标志可以与通常执行文件部署的任何命令一起使用:

请注意“clean” com mand will become useless when files/directories have been 部署ed via 复制, as there will now be no broken symlinks 至 be identified if you should delete a 路径 from your manifest file later.

在您的Magento开发中使用modman的最后提示:’对路径中的路径使用适当程度的特异性很重要“modman” manifest file. It’很明显,我们不会’不想简单地包括路径“app/code”在清单文件中。这将导致整个目录在我们的主代码库中被删除,而有利于我们扩展的内容!但是,使用示例结构,我们’如果已经在上面建立了,则将广义路径包括在内似乎是合理的。“应用程序/代码/社区/ 我的店铺”。但是想象一下一个场景’ve created two 莫德曼-compatible extensions under the same vendor namespace and want 至 部署 them both 至 the same 码 base. 的“MyShop” directory can’不能从两者象征。那’s why you’我会在示例清单文件中注意到’我使用了更具体的“应用程序/代码/社区/ 我的店铺/UsefulExtension”. Always use 路径 s 应用程式 ropriately specific 至 the extension; 路径 s that no other module should 至 uch. 莫德曼 will create the correct 在 termediate directories where needed.

当您需要以打包,可分发的方式开发扩展时,您可以’仅开发一项就可能使您头痛。寻找一种有效的方法来跨这些工作区部署您的工作并使之保持同步不会’不必成为那些头痛的事情之一。 Colin Mollenhour为我们提供了一个出色的工具来应对这一挑战。

了解更多有关该计划的信息 莫德曼 wiki.

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *

该网站使用Akismet减少垃圾邮件。 了解如何处理您的评论数据.

最近的帖子 查看全部
2020年10月22日

Covid世界中的假日销售:应对挑战

毫无疑问,2020年是历史性的一年。火灾,全球大流行,暴动,老虎王等’只是冰山一角。如 […]
2020年8月7日

涡轮增压ZZPerformance的付费搜索

2020年7月30日

Intermix Beats M1 End of Life with 优雅的骆马Accelerator