You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
<?php namespace Wpstudio\AssetsManifest\Classes\Bundlers;
|
|
|
|
use Wpstudio\AssetsManifest\Classes\AssetsManifestException;
|
|
use Wpstudio\AssetsManifest\Classes\ManifestReader;
|
|
|
|
abstract class Bundler
|
|
{
|
|
const BUNDLER_WEBPACK_ENCORE = 'webpack-encore';
|
|
const BUNDLER_VITE = 'vite';
|
|
|
|
public static array $bundlers = [
|
|
self::BUNDLER_WEBPACK_ENCORE => WebpackEncoreBundler::class,
|
|
self::BUNDLER_VITE => ViteBundler::class,
|
|
];
|
|
|
|
protected ?ManifestReader $manifestReader;
|
|
|
|
public function __construct(?ManifestReader $manifestReader = null)
|
|
{
|
|
if (isset($manifestReader)) {
|
|
$this->manifestReader = $manifestReader;
|
|
}
|
|
}
|
|
|
|
public function getBundlerType(): string
|
|
{
|
|
return array_flip(self::$bundlers)[get_class($this)];
|
|
}
|
|
|
|
public function validateBundlerType(string $bundlerType)
|
|
{
|
|
if ($this->getBundlerType() != $bundlerType) {
|
|
throw new AssetsManifestException(
|
|
sprintf(
|
|
'Expected bundler type is %s, but actual %s',
|
|
$bundlerType,
|
|
$this->getBundlerType()
|
|
)
|
|
);
|
|
}
|
|
}
|
|
|
|
public function getEntrypoint(string $entrypointPathInManifest): array
|
|
{
|
|
return $this->manifestReader->get($entrypointPathInManifest);
|
|
}
|
|
}
|