inteve/assets-manager 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

inteve/assets-manager

最新稳定版本:v1.0.0

Composer 安装命令:

composer require inteve/assets-manager

包简介

Assets manager for PHP apps.

README 文档

README

Build Status Downloads this Month Latest Stable Version License

Assets manager for PHP apps.

Donate

Installation

Download a latest package or use Composer:

composer require inteve/assets-manager

Inteve\Assets-manager requires PHP 8.0 or later.

Usage

$currentEnvironment = PRODUCTION_MODE ? 'production' : 'development';
$manager = new Inteve\AssetsManager\AssetsManager($currentEnvironment, '/public/path');


// get public file path
echo $manager->getPath('css/my-file.css'); // '/public/path/css/my-file.css'
echo $manager->getPath('imgs/avatar.png'); // '/public/path/imgs/avatar.png'


// stylesheets
$manager->addStylesheet(string $file, string $environment = NULL);
$manager->addStylesheet('css/style.css');
$manager->addStylesheet('css/dev.css', 'development');

$assetFiles = $manager->getStylesheet();


// scripts
$manager->addScript(string $file, string $environment = NULL);
$manager->addScript('js/script.js');
$manager->addScript('js/prod.js', 'production');

$assetFiles = $manager->getScripts();


// critical scripts (scripts in <head> for example)
$manager->addCriticalScript(string $file, string $environment = NULL);
$manager->addCriticalScript('js/script.js');
$manager->addCriticalScript('js/prod.js', 'production');

$assetFiles = $manager->getCriticalScripts();

HTML tags

foreach ($manager->getStylesheetsTags() as $tag) {
	echo $tag;
}


foreach ($manager->getScriptsTags() as $tag) {
	echo $tag;
}


foreach ($manager->getCriticalScriptsTags() as $tag) {
	echo $tag;
}

Cache busting

$fileHashProvider = new Inteve\AssetsManager\Md5FileHashProvider(__DIR__ . '/real/path/to/assets');
$manager = new Inteve\AssetsManager\AssetsManager(
	$currentEnvironment,
	'/public/path/to/assets',
	[],
	$fileHashProvider
);

echo $manager->getPath('css/styles.css'); // prints something like '/public/path/to/assets/css/styles.ab9cd8ef76.css'

External sources

This isn't recommended usage.

$manager->addScripts('https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js');

Bundles

class JQueryBundle implements Inteve\AssetsManager\IAssetsBundle
{
	function getName()
	{
		return 'jquery';
	}


	function registerAssets(Bundle $bundle)
	{
		$bundle->addScripts('https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js');
	}
}


class ContactFormBundle implements Inteve\AssetsManager\IAssetsBundle
{
	function getName()
	{
		return 'myweb/contactForm';
	}


	function registerAssets(Bundle $bundle)
	{
		$bundle->requireBundle('jquery');
		$bundle->addScripts('components/contact-form.js');
		$bundle->addStylesheet('components/contact-form.css');
	}
}

$manager = new Inteve\AssetsManager\AssetsManager(
	$currentEnvironment,
	'/public/path/to/assets',
	[
		new JQueryBundle,
		new ContactFormBundle,
	]
);
$manager->requireBundle('myweb/contactForm');

echo implode("\n", $manager->getScriptsTags());
echo implode("\n", $manager->getStylesheetsTags());

Prints:

<script src="https://cdn.jsdelivr.net/npm/jquery/dist/jquery.min.js"></script>
<script src="/public/path/to/assets/components/contact-form.js"></script>
<link rel="stylesheet" type="text/css" href="/public/path/to/assets/components/contact-form.css">

License: New BSD License
Author: Jan Pecha, https://www.janpecha.cz/

统计信息

  • 总下载量: 7.78k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 1
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-3-Clause
  • 更新时间: 2020-02-25