mvalim/package-utils

用于 Laravel 5 包开发的辅助工具

dev-master 2015-01-24 01:44 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:28:06 UTC


README

由于 Laravel 5 未提供一些工作台/package 功能,我决定编写这个包,并将一些常用功能添加到默认服务提供者中,例如发布 configsmigrations

如果您需要恢复旧功能,可以尝试

配置: https://github.com/orchestral/config

使用方法

要使用这些辅助工具,第一步是将此包添加到 composer 依赖项中。

composer require mvalim/package-utils

安装此包后,您只需在您的服务提供者中扩展 Mvalim\PackageUtils\Provider 而不是 Illuminate\Support\ServiceProvider,辅助工具即可使用。

一旦安装了此包,您可以注册任意数量的包,而无需担心性能。发布者将在运行时仅注册您的资源,不会进行任何额外的检查(例如文件是否存在)。如果资源尚未发布,可能会抛出异常。

首先,您必须定义包名称和命名空间(用于配置和其他需要命名空间的资源)。在注册包时,只需调用

$this->package('<vendor>/<packageName>', '<namespace>');

ex.: $this->package('mvalim/package', 'my-package');

警告: 如果没有提供命名空间,则使用 vendor.packageName 作为命名空间

可用方法

当您扩展 Provider 类时,以下方法将可用

needsConfig($path)

添加要发布的配置文件。

$path: 可以是单个文件或包含多个文件的目录,在发布时将合并为单个 config/<vendor>/<package>/config.php

警告: 与默认的 Laravel 配置文件一样,所有这些文件都必须返回一个数组。

needsMigration($path)

添加要发布的迁移文件。 $path: 必须包含需要发布到迁移路径的所有迁移的目录。

警告: 此辅助程序将 仅复制 文件到迁移路径。

发布您的资源

定义了您的包资源后,您可以使用以下命令发布它们

php artisan package:publish <packageName> <optional:resources>

php artisan package:publish mvalim/package

// publish only the configs
php artisan package:publish mvalim/package config

// backup the existing, and overwrite the resources
php artisan package:publish mvalim/package --force

如果您没有提供资源,则将发布所有已注册的资源。 package:publish 命令接受 --force 选项,将现有资源备份到 storage/packages 并覆盖它们。

服务提供者示例

<?php  namespace Acme;

use Mvalim\PackageUtils\Provider;

class AcmeServiceProvider extends Provider {

	/**
	 * Register the service provider.
	 *
	 * @return void
	 */
	public function register()
	{
		$this->package('acme/awesome-package');
		$this->needsConfig(__DIR__ . '/resources/configs');
		$this->needsMigration(__DIR__ . '/resources/migrations');
	}
}

// in the console
php package:publish acme/awesome-package


// Done, all the configs and migrations are now published! You can access the
// configurations, and all your migrations are now available

Config::get('acme.awesome-package.my-option');
Artisan::call('migrate');

待办事项

  • 编写缺失的测试 !!
  • 添加其他发布者
  • 允许人们注册自定义发布者/辅助工具