wearejh/statics-merger

一个用于将静态资源符号链接到JH Magento骨架的Composer插件

安装次数: 12,311

依赖者: 0

建议者: 0

安全性: 0

星标: 9

关注者: 22

分支: 4

开放问题: 0

类型:composer-plugin

4.0.3 2017-03-10 11:21 UTC

This package is auto-updated.

Last update: 2024-08-29 04:42:50 UTC


README

Build Status Scrutinizer Code Quality Scrutinizer Code Coverage

一个旨在简化前端和后端开发团队工作流程的Composer插件。前端团队使用的静态仓库被添加到项目中,作为类型 static 的Composer依赖。

该插件会挂载到两个Composer命令 installupdate,在完成时会将定义在它们的 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 数组包含多个对象,定义了文件的 srcdest。其中,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