wearejh / statics-merger
一个用于将静态资源符号链接到JH Magento骨架的Composer插件
Requires
- composer-plugin-api: ^1.0
Requires (Dev)
- composer/composer: dev-master
- phpunit/phpunit: ^6.0
- squizlabs/php_codesniffer: ^2.7
README
一个旨在简化前端和后端开发团队工作流程的Composer插件。前端团队使用的静态仓库被添加到项目中,作为类型 static
的Composer依赖。
该插件会挂载到两个Composer命令 install
和 update
,在完成时会将定义在它们的 composer.json
文件中的所有静态包进行符号链接。
安装
此模块可通过 Composer
安装。如果您已经将Magento骨架作为基础模块使用,则只需要求此项目,其余工作将自动完成。
Magento 1
$ cd project-root $ ./composer.phar require "wearejh/statics-merger:^2.0.0"
Magento 2
$ cd project-root $ ./composer.phar require "wearejh/statics-merger:^3.0.0"
如何从1.x升级到2.x?
建议在更改了composer.json后,首先运行 composer update statics-merger --no-plugins
,然后运行 composer update nothing
以映射新配置。
注意:根据配置更改,您可能还需要手动清理旧映射中剩余的任何符号链接。
用法
静态项目
如果还没有 composer.json
文件,创建一个包含相关信息的文件并将其提交到仓库。
为此,静态仓库需要 composer.json
中将 type
设置为 static
。
示例 Static Composer.json
{ "name": "wearejh/{project-name}-static", "type": "static", "description": "Main theme for {project-name}", "keywords": ["jh", "statics"], "authors": [ { "name": "JH", "email": "hello@wearejh.com", "homepage": "http://www.wearejh.com" } ] }
Magento项目
在您的项目 composer.json
中,您需要确保设置一些配置。
在您的 require
中,您需要添加任何想要添加的静态资源,如果是私有的,也请添加仓库。
注意:它非常适合处理多个静态仓库 👍
"require": { "wearejh/{project-name}-static": "dev-master" }, "repositories": [ { "type": "git", "url": "git@jh.git.beanstalkapp.com:/jh/{project-name}-static.git" } ]
在您的 extra
中,需要正确设置 magento-root-dir
并为每个静态仓库定义 static-map
。
"extra":{ "magento-root-dir": "htdocs/", "static-map" : { "wearejh/{project-name}-static": { "package/theme": [ { "src": "public/assets", "dest": "assets" }, { "src": "public/assets/img/favicon*", "dest": "/" }, { "src": "assets/images/catalog", "dest": "images/catalog" } ] } } }
第一个键是您在 require
部分中使用的仓库名称,而内部每个键是 package/theme
,例如示例将映射到您的 `magento-root-dir` 中的 skin/frontend/package/theme
。
package/theme
数组包含多个对象,定义了文件的 src
和 dest
。其中,src
值与静态仓库的 根目录 相关,而 dest
与定义在 Magento项目 中的 package/theme
相关,例如在您的 magento-root-dir
中的 skin/frontend/package/theme/
。
需要将静态仓库映射到多个包或主题? 没问题,只需将另一个 package/theme
数组添加到您的仓库映射中,当然,确保使用与其他不同的名称以避免覆盖。
有效映射
注意: 范围需要 dest
为文件夹而不是文件,而文件和目录需要指向相应的完整路径,这允许您在需要时重命名它们。如果您在范围上留空 dest
,则它将映射到您的 package/theme
中相同的源目录结构。
文件
将图像链接到不同的目录结构并重命名
{ "src": "public/assets/img/awesome/cake.gif", "dest": "images/newcake.gif" }
目录
链接整个目录,保留所有子目录和文件
{ "src": "public/assets", "dest": "assets" }
范围
您还可以使用范围,这使得它非常出色!一个很好的用例是favicon,其中您可以使用不同的分辨率和命名约定。要针对所有这些,您只需简单地使用 favicon*
,如下面的默认示例所示。
所有favicon存储在根目录 skin/frontend/package/theme/
{ "src": "favicon*", "dest": "/" }
最后注意事项
- 使用标签来显式地拉取静态仓库
- 别忘了将
package/theme
目录添加到你的.gitignore
文件中,否则你会将静态文件添加到Magento仓库,每个人都将讨厌你 - 你可以直接从
vendor
目录修改静态文件,并直接推送到主仓库,真棒! - 祝您玩得开心!😄
有问题吗?
如果你发现任何问题或边缘情况,这些情况可能需要在Composer插件中考虑,请尽可能详细地打开一个问题,以便可以重现。
运行测试
$ cd vendor/wearejh/statics-merger
$ php composer.phar install
$ ./vendor/bin/phpunit