mpyw/comphar

将所有composer依赖打包成一个单个的phar文件

安装数: 1,289

依赖者: 0

建议者: 0

安全性: 0

星标: 73

关注者: 5

分支: 5

开放问题: 1

类型:项目

v1.0.1 2019-02-16 17:14 UTC

This package is auto-updated.

Last update: 2024-09-09 09:46:17 UTC


README

Composer + Phar

将所有composer依赖打包成一个单个的phar文件。

安装

1. 执行composer全局安装

通过Packagist安装。

example@localhost:~$ composer global require mpyw/comphar:^1.0
Changed current directory to /Users/mpyw/.composer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing mpyw/comphar (dev-master XXXXXXX)
    Cloning XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Writing lock file
Generating autoload files
example@localhost:~$

2. 更新$PATH

如果尚未这样做,您必须将~/.composer/vendor/bin添加到$PATH。
将以下语句追加到~/.bashrc~/.zshrc等文件中。

export PATH="~/.composer/vendor/bin:$PATH"

用法

example@localhost:~$ comphar -h
Usage: ./comphar [options]
Options:
  -h, --help             Show help.
  -v, --verbose          Verbose output.
  -o, --out <value>      Output archive name. Default to "vendor.phar".
  -d, --dir <value>      Project root directory. Default to getcwd().
      --yes              Without confirmation.
example@localhost:~$

示例

1. 准备您的仓库

准备composer.json

{
    "name": "mpyw/my-new-package",
    "description": "This is a stupid example",
    "require": {
        "mpyw/my-dependency-1": "@dev",
        "mpyw/my-dependency-2": "1.0.0",
    },
    "autoload": {
        "psr-4": {
            "mpyw\\MyNewPackage\\": "src/"
        }
    }
}

2. 生成vendor.phar

让我们在那个目录下生成vendor.phar

example@localhost:~/my-new-package$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files
example@localhost:~/my-new-package$ comphar -v
Project directory: ~/my-new-package
Output filename: ~/my-new-package/vendor.phar
Continue? [y/n]: y
Added: ...
Added: ...
Added: ...
Added: ...
Added: ...
example@localhost:~/my-new-package$

注意

即使您没有依赖,也必须调用composer installcomposer update来调整自己的库以自动加载。

3. 享受

您可以使用vendor.phar以及常规的vendor/autoload.php

最简单的用法

<?php
use mpyw\MyNewPackage\Foo;
require __DIR__ . '/vendor.phar';
$foo = new Foo();

添加自己的自动加载

<?php
use mpyw\MyNewPackage\Foo;
use mpyw\MyOtherPackage\Bar;
$loader = require __DIR__ . '/vendor.phar';
$loader->addPsr4('mpyw\\MyOtherPackage\\', '~/my-other-package/src');
$foo = new Foo();
$bar = new Bar();

错误:权限被拒绝

您可能会遇到“权限被拒绝”的错误

example@localhost:~/my-new-package$ comphar -v
Error: Permission denied: Disable "phar.readonly" and "phar.require_hash"

在这种情况下,您需要调整“php.ini”中的配置

[Phar]
; https://php.ac.cn/phar.readonly
phar.readonly = Off

; https://php.ac.cn/phar.require-hash
phar.require_hash = Off