当我开始一个新的M2项目时,我要做的第一件事是通过composer安装核心:
composer create-project --repository-url=https://repo.magento.com/ magento/project-community-edition
现在,我可以在下编写我的自定义模块和主题app/code
。然后,我composer.*
将整个app/code
文件夹添加到我的VCS中。到目前为止,一切都很好。
假设现在我想为我的项目使用一些构建工具,比如说Grunt或Gulp。
如果我自己提交
Gruntfile.js
,克隆仓库后magento/magento2-base
运行时,它将被程序包覆盖composer install
。如果我提交了我
gulpfile.js
,我真的不能在a中定义我的依赖package.json
,因为它也会被magento/magento2-base
。如果我决定使用Magento的Grunt设置并希望通过编辑
/dev/tools/grunt
(例如themes.js
)下的文件来自定义它,则不能,因为我的更改将被覆盖magento/magento2-base
。
我的理解是,您实际上无法在文档根目录中做很多事情。对于这个问题,当然有很多解决方案:
- 我可以
git checkout -
在安装后立即运行以重置自己的文件 - 我可以将构建文件存储在专用文件夹中,
/build
例如 - 我可以使用其他构建工具,例如Phing,Ant或Rake(尽管我的前端开发人员不会那么高兴)
- 我可以替换
magento/magento2-base
为具有针对核心文件的自定义映射的自定义包(虽然不是最佳选择,但是,这是一个选择)
我个人不喜欢所有这些选项,因此我想知道是否有一种首选或更好的方法来实现我要做的事情。
有人有同样的问题吗?您是如何解决的?您如何在VCS下构建项目?
更新
与项目设置有关的一个额外要点。在实验中,我注意到Magento作曲家安装程序具有文件覆盖标志:
"extra": {
"magento-force": "override"
}
如果我没记错的话,它在内部被视为布尔值,因此我尝试将其设置false
为跳过重写。当我运行时composer install
,由于文件已存在,安装失败。基本上,如果我不让Magento覆盖文件,就无法安装。
那么,该标志的目的是什么?是否只想对我进行检查?老实说,这对我来说没有多大意义,但也许有人可以阐明这个话题。
Gruntfile.js
,gulpfile.js
和package.json
问题已解决。问题解决在这个问题上仍然适用于新的Magento 2个版本,当你需要改变themes.js
,index.php
或.htaccess
为实例。