koodimonni/composer-dropin-installer

安装包或从包中安装少量文件到自定义路径,而不会覆盖现有内容。

安装量: 2,018,510

依赖项: 36

建议者: 0

安全: 0

星标: 43

关注者: 6

分支: 12

开放问题: 8

类型:composer-plugin

1.4 2022-02-02 11:42 UTC

This package is not auto-updated.

Last update: 2024-09-20 02:14:35 UTC


README

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

此Composer插件帮助您将Composer打包的文件移动或复制到您想要的位置。

Composer仅允许您将完整目录安装到它们自己的目录中。对于自定义安装路径,composer/installers 非常有用,但它会覆盖文件夹中的所有内容,并且不允许两个或更多项目共存。我们只是让Composer安装东西,然后继续。

我最初创建此插件是为了使用Composer安装多个WordPress语言。我需要将多个包放在同一个目录 htdocs/wp-content/languages 中。请看如何使用Composer 更新WordPress语言

如何使用它

跟随这些简单的步骤

1. 需要 "koodimonni/composer-dropin-installer": "*" 或 "dev-master"

"require": {
    "koodimonni/composer-dropin-installer": "dev-master"
  }

2. 将自定义路径添加到您的 composer.json -> extra -> dropin-paths。

"extra": {
    "dropin-paths": {
      "htdocs/wp-content/languages/": ["type:wordpress-language"]
    }
  }

3. 享受Composer提供的良好依赖关系管理,并将东西安装到您想要的位置。

最终结果看起来像这样

{
  "name": "koodimonni/wordpress",
  "type": "project",
  "description": "WordPress with composer languages using Koodimonni dropin installer",
  "homepage": "http://github.com/koodimonni/composer-dropin-installer",
  "authors": [
    {
      "name": "Onni Hakala",
      "email": "onni@koodimonni.fi",
      "homepage": "https://github.com/onnimonni"
    }
  ],
  "keywords": [
    "wordpress", "composer", "wp", "languages"
  ],
  "config": {
    "preferred-install": "dist"
  },
  "repositories": [
    {
      "type": "composer",
      "url": "https://wpackagist.org"
    },
    {
      "type": "composer",
      "url": "https://wp-languages.github.io"
    }
  ],
  "require": {
    "php": ">=5.3.2",

    "koodimonni/composer-dropin-installer": "*",

    "johnpbloch/wordpress": "*",
    "composer/installers": "~1.0",
    "vlucas/phpdotenv": "~1.0.6",


    "koodimonni-language/fi": "*",
    "koodimonni-language/et": "*",
    "koodimonni-language/ru_ru": "*",

    "wpackagist-plugin/akismet": "*",
    "wpackagist-plugin/wp-redis": "*",
    "wpackagist-plugin/woocommerce": "*",
    "wpackagist-plugin/wordpress-mu-domain-mapping": "*"
  },
  "extra": {
    "installer-paths": {
      "htdocs/wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
      "htdocs/wp-content/themes/{$name}": ["type:wordpress-theme"]
    },
    "dropin-paths": {
      "htdocs/wp-content/mu-plugins/": ["type:wordpress-muplugin"],
      "htdocs/wp-content/languages/": ["type:wordpress-language"],
      "htdocs/wp-content/languages/plugins/": ["vendor:wordpress-plugin-language"],
      "htdocs/wp-content/languages/themes/": ["vendor:wordpress-theme-language"],
      "htdocs/wp-content/": [
        "package:wpackagist-plugin/wp-redis:object-cache.php",
        "package:wpackagist-plugin/wordpress-mu-domain-mapping:sunrise.php",
        "type:wordpress-dropin"]
    },
    "wordpress-install-dir": "htdocs/wordpress"
  }
}

移动与复制文件

默认情况下,此插件会从源移动文件到目标,这意味着文件将从源中消失。

如果您更喜欢复制而不是移动(这意味着在安装后文件仍然保留在源中),请将以下配置插入到您的 composer.jsonconfig 声明中

"config": {
    "dropin-installer": "copy"
}

但是关于这个看起来不可能的语法呢?

Dropin语法由四个部分组成:"{path}": "{directive}:{target}:{files}"

路径 是到目标文件夹的相对路径。

指令 是以下之一

  • package - 例如 package:koodimonni-language/fi
  • vendor - 例如 vendor:koodimonni-language
  • type - 例如 type:wordpress-language

文件 是可选的,默认情况下将移动所有文件。

在某些情况下,您可能只想从包中移动一个文件。我发现WordPress dropins 需要这样做。一个好的例子是:域名映射 或 object-cache.php。

一些注意事项

  • 脚本与 composer/installers 配合得很好
  • 我会自动忽略这些文件
.DS_store
.git
.gitignore
composer.json
composer.lock
readme
readme.md
readme.txt
changelog.txt
license
license.md
license.txt
phpunit.xml
  • 脚本需要类Unix文件系统(OS X,Linux)

测试

使用以下命令运行PHPUnit测试

composer test

测试在 tests/ 目录中进行,其中使用了两个模拟Composer项目来测试插件安装方法。

待办事项

  • 处理删除和更新时的删除。这可以通过 [vendor-dir] 中的 json-database 容易地完成

变更日志

  • 1.4 自动忽略 readme readme.txt changelog.txtlicense.txt 文件。感谢 @ocean90
  • 1.3 支持 composer 2.0
  • 1.2 添加了复制文件而不是移动文件的功能。感谢 @rask 的贡献!
  • 1.1.0 用 Composer\Script\PackageEvent 替换了 Composer\Installer\PackageEvent
  • 1.0.1 更新测试到新仓库 https://wp-languages.github.io
  • 1.0 稳定版发布,更新到更新的composer-plugin-api
  • 0.2.4 修复了在额外部分未定义'dropin-paths'时崩溃的问题。
  • 0.2.3 修复了错误并添加了当运行dropins时对用户的简短通知
  • 0.2.2 修复了错误
  • 0.2.1 修复了错误
  • 0.2 将自定义composer脚本来插件转换
  • 0.1 初次发布

最后

感谢 @Seldaek 为packagist.org所做的一切辛勤工作!