Skip to content

Commit 55cde3c

Browse files
authored
Merge pull request #2180 from hydephp/dont-copy-app-css-when-its-loaded-through-hydefront-cdn
[2.x] Don't copy `app.css` when it's loaded through the CDN
2 parents b462190 + 790ce0d commit 55cde3c

File tree

3 files changed

+66
-2
lines changed

3 files changed

+66
-2
lines changed

RELEASE_NOTES.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ This serves two purposes:
162162

163163
- Added missing collection key types in Hyde facade method annotations in https://github.com/hydephp/develop/pull/1784
164164
- The `app.js` file will now only be compiled if it has scripts in https://github.com/hydephp/develop/pull/2028
165+
- The `app.css` file will no longer be copied to the media output directory when app styles are configured to be loaded from a CDN in https://github.com/hydephp/develop/pull/2180
165166

166167
### Security
167168

packages/framework/src/Framework/Actions/PreBuildTasks/TransferMediaAssets.php

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace Hyde\Framework\Actions\PreBuildTasks;
66

7+
use Hyde\Facades\Config;
78
use Hyde\Facades\Filesystem;
89
use Hyde\Support\Filesystem\MediaFile;
910
use Hyde\Framework\Features\BuildTasks\PreBuildTask;
@@ -19,11 +20,17 @@ public function handle(): void
1920
{
2021
$this->newLine();
2122

22-
if (MediaFile::all()->isEmpty()) {
23+
$files = MediaFile::all();
24+
25+
if (Config::getBool('hyde.load_app_styles_from_cdn', false)) {
26+
$files->forget('app.css');
27+
}
28+
29+
if ($files->isEmpty()) {
2330
$this->skip("No media files to transfer.\n");
2431
}
2532

26-
$this->withProgressBar(MediaFile::all(), function (MediaFile $file): void {
33+
$this->withProgressBar($files, function (MediaFile $file): void {
2734
$sitePath = $file->getOutputPath();
2835
$this->needsParentDirectory($sitePath);
2936
Filesystem::putContents($sitePath, $file->getContents());

packages/framework/tests/Feature/StaticSiteServiceTest.php

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,4 +391,60 @@ public function testSiteOutputDirectoryCanBeChangedInConfiguration()
391391

392392
File::deleteDirectory(Hyde::path('_site/build'));
393393
}
394+
395+
public function testAppCssIsTransferredWhenLoadAppStylesFromCdnIsFalse()
396+
{
397+
config(['hyde.load_app_styles_from_cdn' => false]);
398+
399+
$this->artisan('build')->assertExitCode(0);
400+
401+
$this->assertFileExists(Hyde::path('_site/media/app.css'));
402+
$this->assertFileEquals(Hyde::path('_media/app.css'), Hyde::path('_site/media/app.css'));
403+
}
404+
405+
public function testAppCssIsNotTransferredWhenLoadAppStylesFromCdnIsTrue()
406+
{
407+
config(['hyde.load_app_styles_from_cdn' => true]);
408+
409+
$this->artisan('build')->assertExitCode(0);
410+
411+
$this->assertFileDoesNotExist(Hyde::path('_site/media/app.css'));
412+
}
413+
414+
public function testOtherAssetsAreTransferredWhenLoadAppStylesFromCdnIsTrue()
415+
{
416+
config(['hyde.load_app_styles_from_cdn' => true]);
417+
$this->file('_media/image.png', 'fake image data');
418+
419+
$this->artisan('build')->assertExitCode(0);
420+
421+
$this->assertFileDoesNotExist(Hyde::path('_site/media/app.css'));
422+
$this->assertFileExists(Hyde::path('_site/media/image.png'));
423+
$this->assertFileEquals(Hyde::path('_media/image.png'), Hyde::path('_site/media/image.png'));
424+
}
425+
426+
public function testSkipMessageWhenOnlyAppCssExistsAndLoadAppStylesFromCdnIsTrue()
427+
{
428+
config(['hyde.load_app_styles_from_cdn' => true]);
429+
430+
$this->artisan('build')
431+
->expectsOutputToContain('Transferring Media Assets... ')
432+
->expectsOutputToContain('Skipped')
433+
->expectsOutputToContain('> No media files to transfer.')
434+
->assertExitCode(0);
435+
}
436+
437+
public function testNormalTransferWhenMultipleAssetsExistAndLoadAppStylesFromCdnIsTrue()
438+
{
439+
config(['hyde.load_app_styles_from_cdn' => true]);
440+
$this->file('_media/image.png', 'fake image data');
441+
442+
$this->artisan('build')
443+
->expectsOutputToContain('Transferring Media Assets...')
444+
->doesntExpectOutputToContain('Skipped')
445+
->assertExitCode(0);
446+
447+
$this->assertFileDoesNotExist(Hyde::path('_site/media/app.css'));
448+
$this->assertFileExists(Hyde::path('_site/media/image.png'));
449+
}
394450
}

0 commit comments

Comments
 (0)