jakoch/phantomjs-installer

一个Composer包,可以将PhantomJS二进制文件(Linux、Windows、Mac)安装到项目的`/bin`目录。

安装次数: 5,049,188

依赖者: 85

建议者: 4

安全: 0

星标: 150

关注者: 12

分支: 43

公开问题: 1

类型:custom-installer

3.0.1 2021-09-03 18:54 UTC

This package is auto-updated.

Last update: 2024-08-26 01:39:59 UTC


README

Latest Stable Version Total Downloads Build Status License

一个Composer包,可以将PhantomJS二进制文件(Linux、Windows、Mac)安装到项目的/bin目录。

目录

安装

要将PhantomJS作为本地、项目级的依赖安装到项目中,只需在项目的`composer.json`文件中添加对jakoch/phantomjs-installer的依赖即可。

{
    "require": {
        "jakoch/phantomjs-installer": "^3"
    },
    "config": {
        "bin-dir": "bin"
    },
    "scripts": {
        "post-install-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ],
        "post-update-cmd": [
            "PhantomInstaller\\Installer::installPhantomJS"
        ]
    }
}

对于开发依赖,将require更改为require-dev

默认下载源是:https://bitbucket.org/ariya/phantomjs/downloads/ 你可以通过设置自定义CDN URL来更改它,这已在"从镜像下载"部分中解释。

通过设置Composer配置指令bin-dir供应商二进制文件将被安装到指定的文件夹中。重要!Composer默认将二进制文件安装到`vendor\bin`。

`scripts`部分是必要的,因为目前Composer不会将事件传递给依赖的处理脚本。如果你省略它,你可能需要手动执行安装程序。

现在,假设已设置如要求的`scripts`部分,PhantomJS二进制文件将被安装到`/bin`文件夹,并随着项目的Composer依赖项一起更新。

如何要求特定的PhantomJS版本?

环境变量和服务器变量`PHANTOMJS_VERSION`允许你在打包时指定版本要求。

你还可以在`composer.json`的`extra`部分设置phantomjs-version

 "extra": {
   "jakoch/phantomjs-installer": {
     "phantomjs-version": "2.1.1"
   }
 }

版本的搜索顺序是1) $_ENV,2) $_SERVER,3) `composer.json` (extra部分),4) 回退到v2.1.1(硬编码的最后一个版本)。

这是如何内部工作的?

  1. 获取PhantomJS安装程序

在你的composer.json中,你需要要求"phantomjs-installer"这个包。该包由composer获取并存储到`./vendor/jakoch/phantomjs-installer`。它只包含一个文件,即PhantomInstaller\\Installer

  1. 平台特定的PhantomJS下载

PhantomInstaller\\Installer作为"post-install-cmd"运行。这就是为什么你在"composer.json"中需要"scripts"部分的原因。安装程序创建一个新的内存中的composer包"phantomjs",检测你的操作系统,并将正确的Phantom版本下载到`./vendor/jakoch/phantomjs`文件夹。所有PhantomJS文件都存储在那里,特别是`examples`。

  1. 安装到`/bin`文件夹

然后将二进制文件从`./vendor/jakoch/phantomjs`复制到由Composer配置的`bin-dir`文件夹。

  1. 生成PhantomBinary

安装程序生成一个PHP文件PhantomInstaller\\PhantomBinary,并插入二进制的路径。

PhantomBinary

为了方便访问二进制文件及其文件夹,在安装过程中自动创建了一个名为`PhantomBinary`的类。

该类定义了常量`BIN`和`DIR`

  • `BIN`是PhantomJS二进制文件的完整路径,例如`/your_project/bin/phantomjs`
  • DIR 是二进制文件的文件夹,例如 /your_project/bin

这两个常量也可以通过它们的获取方法 getBin()getDir() 访问。

使用方法

use PhantomInstaller\PhantomBinary;

// get values with class constants

$bin = PhantomInstaller\PhantomBinary::BIN;
$dir = PhantomInstaller\PhantomBinary::DIR;

// get values with static functions

$bin = PhantomInstaller\PhantomBinary::getBin();
$dir = PhantomInstaller\PhantomBinary::getDir();

此功能与 Node.js 的 phantomjs 模块location.js 类似。

覆盖平台要求

环境变量和服务器变量 PHANTOMJS_PLATFORMPHANTOMJS_BITSIZE 允许您在打包时覆盖平台要求。这使打包系统与目标系统解耦。允许在 Linux 上为 MacOSX 打包或在 Windows 上为 Linux 打包。

可能的值

  • PHANTOMJS_PLATFORM 的值有: macosxwindowslinux
  • PHANTOMJS_BITSIZE 的值有: 3264

从镜像下载

您可以通过以下位置之一来覆盖默认的 PhantomJS 二进制文件下载位置。按优先级顺序列出(优先级最高)

  • 环境变量 PHANTOMJS_CDNURL
  • 服务器变量 PHANTOMJS_CDNURL
  • 在您的 composer.json 中使用 $['extra']['jakoch/phantomjs-installer']['cdnurl']
 "extra": {
   "jakoch/phantomjs-installer": {
     "cdnurl": "https://github.com/Medium/phantomjs/releases/download/v1.9.19/"
   }
 },

默认下载位置

默认下载位置是 Bitbucket: https://api.bitbucket.org/2.0/repositories/ariya/phantomjs/downloads/。您不需要明确设置它。当 PHANTOMJS_CDNURL 未设置时,将使用它。

镜像

您可以将以下镜像 URL 之一用作 PHANTOMJS_CDNURL 的值

  • https://cnpmjs.org/downloads/ - 美国,圣马特奥(47.88.189.193)
  • https://npm.taobao.org/mirrors/phantomjs/ - 中国,杭州(114.55.80.225)
  • https://github.com/Medium/phantomjs/ - 美国,旧金山(192.30.253.113)

此镜像列表并不完整。如果您知道其他镜像,请毫不犹豫地将其添加到此列表中。

镜像 URL 也不是硬编码的,除了 Github URL。这使您能够指向任何您喜欢的 PhantomJS 镜像或下载文件夹。例如,您可以将指向下载文件夹的 URL 指向您公司存储二进制的下载文件夹: PHANTOMJS_CDNURL=https://cdn.company.com/downloads/phantomjs/

404时自动尝试降级版本下载

如果在下载存档时由于 HttpStatusCode 404(资源未找到)失败,下载器将自动将版本降低到下一个可用的版本并重试。重试次数由 getPhantomJSVersions() 中硬编码的 PhantomJS 版本数决定。此功能是为了解决 v2.0.0 在所有平台上不可用的问题(参见问题 #25)。