Skip to content

Commit

Permalink
Merge pull request #1141 from wintercms/wip/vite-mix-v2
Browse files Browse the repository at this point in the history
Documented by wintercms/docs#200
  • Loading branch information
LukeTowers committed Jul 16, 2024
2 parents cb51ce9 + 9b252d6 commit 21b6f4d
Show file tree
Hide file tree
Showing 56 changed files with 3,089 additions and 862 deletions.
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,4 @@
.gitattributes export-ignore
.gitpod.yml export-ignore
CHANGELOG.md export-ignore
/package.json export-ignore
12 changes: 11 additions & 1 deletion modules/cms/twig/Extension.php
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
<?php namespace Cms\Twig;

use Block;
use Cms\Classes\Controller;
use Event;
use System\Classes\Vite;
use Twig\Extension\AbstractExtension as TwigExtension;
use Twig\TwigFilter as TwigSimpleFilter;
use Twig\TwigFunction as TwigSimpleFunction;
use Cms\Classes\Controller;

/**
* The CMS Twig extension class implements the basic CMS Twig functions and filters.
Expand Down Expand Up @@ -51,6 +52,7 @@ public function getFunctions(): array
new TwigSimpleFunction('content', [$this, 'contentFunction'], $options),
new TwigSimpleFunction('component', [$this, 'componentFunction'], $options),
new TwigSimpleFunction('placeholder', [$this, 'placeholderFunction'], ['is_safe' => ['html']]),
new TwigSimpleFunction('vite', [$this, 'viteFunction'], $options),
];
}

Expand Down Expand Up @@ -166,6 +168,14 @@ public function themeFilter($url): string
return $this->controller->themeUrl($url);
}

/**
* Generates Vite tags via Laravel's Vite Object.
*/
public function viteFunction(array $entrypoints, string $package): \Illuminate\Support\HtmlString
{
return Vite::tags($entrypoints, $package);
}

/**
* Opens a layout block.
*/
Expand Down
1 change: 1 addition & 0 deletions modules/cms/twig/ScriptsNode.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ public function compile(TwigCompiler $compiler)
$compiler
->addDebugInfo($this)
->write("echo \$this->env->getExtension('Cms\Twig\Extension')->assetsFunction('js');\n")
->write("echo \$this->env->getExtension('Cms\Twig\Extension')->assetsFunction('vite');\n")
->write("echo \$this->env->getExtension('Cms\Twig\Extension')->displayBlock('scripts');\n")
;
}
Expand Down
2 changes: 2 additions & 0 deletions modules/system/.eslintignore
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,5 @@ assets/vendor

# Ignore test fixtures
tests/js
tests/fixtures/themes/test/assets/js
tests/fixtures/themes/vitetest/assets/javascript
24 changes: 18 additions & 6 deletions modules/system/ServiceProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Config;
use DateInterval;
use Event;
use Illuminate\Foundation\Vite;
use Illuminate\Pagination\Paginator;
use Illuminate\Support\Facades\Schema;
use Markdown;
Expand Down Expand Up @@ -142,6 +143,9 @@ protected function registerSingletons()
$this->app->singleton('backend.auth', function () {
return \Backend\Classes\AuthManager::instance();
});

// Register the Laravel Vite singleton
$this->app->singleton(Vite::class, \System\Classes\Vite::class);
}

/**
Expand Down Expand Up @@ -316,12 +320,20 @@ protected function registerConsole()
$this->registerConsoleCommand('plugin.rollback', \System\Console\PluginRollback::class);
$this->registerConsoleCommand('plugin.list', \System\Console\PluginList::class);

$this->registerConsoleCommand('mix.install', \System\Console\MixInstall::class);
$this->registerConsoleCommand('mix.update', \System\Console\MixUpdate::class);
$this->registerConsoleCommand('mix.list', \System\Console\MixList::class);
$this->registerConsoleCommand('mix.compile', \System\Console\MixCompile::class);
$this->registerConsoleCommand('mix.watch', \System\Console\MixWatch::class);
$this->registerConsoleCommand('mix.run', \System\Console\MixRun::class);
$this->registerConsoleCommand('mix.compile', Console\Asset\Mix\MixCompile::class);
$this->registerConsoleCommand('mix.config', Console\Asset\Mix\MixConfig::class);
$this->registerConsoleCommand('mix.install', Console\Asset\Mix\MixInstall::class);
$this->registerConsoleCommand('mix.list', Console\Asset\Mix\MixList::class);
$this->registerConsoleCommand('mix.watch', Console\Asset\Mix\MixWatch::class);

$this->registerConsoleCommand('vite.compile', Console\Asset\Vite\ViteCompile::class);
$this->registerConsoleCommand('vite.config', Console\Asset\Vite\ViteConfig::class);
$this->registerConsoleCommand('vite.install', Console\Asset\Vite\ViteInstall::class);
$this->registerConsoleCommand('vite.list', Console\Asset\Vite\ViteList::class);
$this->registerConsoleCommand('vite.watch', Console\Asset\Vite\ViteWatch::class);

$this->registerConsoleCommand('npm.run', Console\NpmRun::class);
$this->registerConsoleCommand('npm.update', Console\NpmUpdate::class);
}

/*
Expand Down
Loading

0 comments on commit 21b6f4d

Please sign in to comment.