From c6f97abcd1f98686fe4b09d3300cfa90178536a0 Mon Sep 17 00:00:00 2001 From: Daniel Wiser Date: Thu, 7 May 2020 09:24:26 -0400 Subject: [PATCH 1/2] Update for Laravel 7.x --- README.md | 2 +- composer.json | 5 +++-- src/SkeletonPreset.php | 10 +++++----- src/SkeletonPresetServiceProvider.php | 6 +++--- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 7216de4..8356a6d 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ Use this repo as a skeleton for your new preset, once you're done please open an issue on [this repo](https://github.com/laravel-frontend-presets/internals). -Here's the latest documentation on Laravel 5.5: +Here's the latest documentation on Laravel 7.x: https://laravel.com/docs/master/ diff --git a/composer.json b/composer.json index 75d2df2..fa3f6aa 100644 --- a/composer.json +++ b/composer.json @@ -1,10 +1,11 @@ { "name": "laravel-frontend-presets/skeleton", - "description": "Laravel 5.5.x Front-end preset for skeleton", + "description": "Laravel 7.x Front-end preset for skeleton", "keywords": ["laravel", "preset", "skeleton"], "license": "MIT", "require": { - "laravel/framework": "5.5.*" + "laravel/framework": "^7.0", + "laravel/ui": "^2.0" }, "autoload": { "psr-4": { diff --git a/src/SkeletonPreset.php b/src/SkeletonPreset.php index b1dc0f2..650433a 100644 --- a/src/SkeletonPreset.php +++ b/src/SkeletonPreset.php @@ -54,7 +54,7 @@ protected static function updatePackageArray(array $packages) protected static function updateSass() { // clean up all the files in the sass folder - $orphan_sass_files = glob(resource_path('/assets/sass/*.*')); + $orphan_sass_files = glob(resource_path('/sass/*.*')); foreach($orphan_sass_files as $sass_file) { @@ -62,7 +62,7 @@ protected static function updateSass() } // copy files from the stubs folder - copy(__DIR__.'/skeleton-stubs/app.scss', resource_path('assets/sass/app.scss')); + copy(__DIR__.'/skeleton-stubs/app.scss', resource_path('sass/app.scss')); } /** @@ -78,7 +78,7 @@ protected static function updateBootstrapping() ); // copy a new bootstrap.js file from your stubs folder - copy(__DIR__.'/skeleton-stubs/bootstrap.js', resource_path('assets/js/bootstrap.js')); + copy(__DIR__.'/skeleton-stubs/bootstrap.js', resource_path('js/bootstrap.js')); } /** @@ -105,13 +105,13 @@ protected static function updateWelcomePage() protected static function addAuthTemplates() { // Add Home controller - copy(__DIR__.'/stubs-stubs/Controllers/HomeController.php', app_path('Http/Controllers/HomeController.php')); + copy(__DIR__.'/skeleton-stubs/Controllers/HomeController.php', app_path('Http/Controllers/HomeController.php')); // Add Auth routes in 'routes/web.php' $auth_route_entry = "Auth::routes();\n\nRoute::get('/home', 'HomeController@index')->name('home');\n\n"; file_put_contents('./routes/web.php', $auth_route_entry, FILE_APPEND); // Copy Skeleton auth views from the stubs folder - (new Filesystem)->copyDirectory(__DIR__.'/foundation-stubs/views', resource_path('views')); + (new Filesystem)->copyDirectory(__DIR__.'/skeleton-stubs/views', resource_path('views')); } } diff --git a/src/SkeletonPresetServiceProvider.php b/src/SkeletonPresetServiceProvider.php index ab9ca37..5b6c7e7 100644 --- a/src/SkeletonPresetServiceProvider.php +++ b/src/SkeletonPresetServiceProvider.php @@ -2,7 +2,7 @@ namespace LaravelFrontendPresets\SkeletonPreset; use Illuminate\Support\ServiceProvider; -use Illuminate\Foundation\Console\PresetCommand; +use Laravel\Ui\UiCommand; class SkeletonPresetServiceProvider extends ServiceProvider { @@ -13,13 +13,13 @@ class SkeletonPresetServiceProvider extends ServiceProvider */ public function boot() { - PresetCommand::macro('skeleton', function ($command) { + UiCommand::macro('skeleton', function ($command) { SkeletonPreset::install(false); $command->info('Skeleton scaffolding installed successfully.'); $command->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.'); }); - PresetCommand::macro('skeleton-auth', function ($command) { //optional + UiCommand::macro('skeleton-auth', function ($command) { //optional SkeletonPreset::install(true); $command->info('Skeleton scaffolding with Auth views installed successfully.'); $command->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.'); From 4e1d821231b8bca7178f432b168a1b463cb4e225 Mon Sep 17 00:00:00 2001 From: Daniel Wiser Date: Thu, 7 May 2020 12:35:46 -0400 Subject: [PATCH 2/2] Match directories closer to the 'laravel-frontend-presets/tailwindcss' package. --- src/SkeletonPreset.php | 128 ++++++++++++------ src/SkeletonPresetServiceProvider.php | 14 +- .../{ => resources/js}/bootstrap.js | 0 .../{ => resources/sass}/_settings.scss | 0 .../{ => resources/sass}/app.scss | 0 .../{ => resources/sass}/skeleton.scss | 0 .../views/auth/login.blade.php | 0 .../views/auth/passwords/email.blade.php | 0 .../views/auth/passwords/reset.blade.php | 0 .../views/auth/register.blade.php | 0 .../{ => resources}/views/home.blade.php | 0 .../views/layouts/app.blade.php | 0 .../{ => resources}/views/welcome.blade.php | 0 13 files changed, 93 insertions(+), 49 deletions(-) rename src/skeleton-stubs/{ => resources/js}/bootstrap.js (100%) rename src/skeleton-stubs/{ => resources/sass}/_settings.scss (100%) rename src/skeleton-stubs/{ => resources/sass}/app.scss (100%) rename src/skeleton-stubs/{ => resources/sass}/skeleton.scss (100%) rename src/skeleton-stubs/{ => resources}/views/auth/login.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/auth/passwords/email.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/auth/passwords/reset.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/auth/register.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/home.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/layouts/app.blade.php (100%) rename src/skeleton-stubs/{ => resources}/views/welcome.blade.php (100%) diff --git a/src/SkeletonPreset.php b/src/SkeletonPreset.php index 650433a..9618597 100644 --- a/src/SkeletonPreset.php +++ b/src/SkeletonPreset.php @@ -1,10 +1,12 @@ '^version']; // packages to remove from the package.json - $packagesToRemove = ['package-name' => '^version']; + $packagesToRemove = ['package-name']; return $packagesToAdd + Arr::except($packages, $packagesToRemove); } @@ -51,18 +56,19 @@ protected static function updatePackageArray(array $packages) * * @return void */ - protected static function updateSass() + protected static function updateStyles() { - // clean up all the files in the sass folder - $orphan_sass_files = glob(resource_path('/sass/*.*')); + tap(new Filesystem, function ($filesystem) { + $filesystem->deleteDirectory(resource_path('sass')); + $filesystem->delete(public_path('js/app.js')); + $filesystem->delete(public_path('css/app.css')); - foreach($orphan_sass_files as $sass_file) - { - (new Filesystem)->delete($sass_file); - } + if (! $filesystem->isDirectory($directory = resource_path('css'))) { + $filesystem->makeDirectory($directory, 0755, true); + } - // copy files from the stubs folder - copy(__DIR__.'/skeleton-stubs/app.scss', resource_path('sass/app.scss')); + $filesystem->copyDirectory(__DIR__.'/skeleton-stubs/resources/sass', resource_path('sass')); + }); } /** @@ -72,13 +78,7 @@ protected static function updateSass() */ protected static function updateBootstrapping() { - // remove exisiting bootstrap.js file - (new Filesystem)->delete( - resource_path('assets/js/bootstrap.js') - ); - - // copy a new bootstrap.js file from your stubs folder - copy(__DIR__.'/skeleton-stubs/bootstrap.js', resource_path('js/bootstrap.js')); + copy(__DIR__.'/skeleton-stubs/resources/js/bootstrap.js', resource_path('js/bootstrap.js')); } /** @@ -94,24 +94,66 @@ protected static function updateWelcomePage() ); // copy new one from your stubs folder - copy(__DIR__.'/skeleton-stubs/views/welcome.blade.php', resource_path('views/welcome.blade.php')); + copy(__DIR__.'/skeleton-stubs/resources/views/welcome.blade.php', resource_path('views/welcome.blade.php')); + } + + /** + * Scaffold Auth controllers into project. + * + * @return void + */ + protected static function scaffoldController() + { + if (! is_dir($directory = app_path('Http/Controllers/Auth'))) { + mkdir($directory, 0755, true); + } + + $filesystem = new Filesystem; + + collect($filesystem->allFiles(base_path('vendor/laravel/ui/stubs/Auth'))) + ->each(function (SplFileInfo $file) use ($filesystem) { + $filesystem->copy( + $file->getPathname(), + app_path('Http/Controllers/Auth/'.Str::replaceLast('.stub', '.php', $file->getFilename())) + ); + }); } /** - * Copy Auth view templates. + * Scaffold Auth views into project. * * @return void */ - protected static function addAuthTemplates() + protected static function scaffoldAuth() { - // Add Home controller - copy(__DIR__.'/skeleton-stubs/Controllers/HomeController.php', app_path('Http/Controllers/HomeController.php')); + file_put_contents(app_path('Http/Controllers/HomeController.php'), static::compileControllerStub()); - // Add Auth routes in 'routes/web.php' - $auth_route_entry = "Auth::routes();\n\nRoute::get('/home', 'HomeController@index')->name('home');\n\n"; - file_put_contents('./routes/web.php', $auth_route_entry, FILE_APPEND); + file_put_contents( + base_path('routes/web.php'), + "Auth::routes();\n\nRoute::get('/home', 'HomeController@index')->name('home');\n\n", + FILE_APPEND + ); + + tap(new Filesystem, function ($filesystem) { + $filesystem->copyDirectory(__DIR__.'/skeleton-stubs/resources/views', resource_path('views')); + + collect($filesystem->allFiles(base_path('vendor/laravel/ui/stubs/migrations'))) + ->each(function (SplFileInfo $file) use ($filesystem) { + $filesystem->copy( + $file->getPathname(), + database_path('migrations/'.$file->getFilename()) + ); + }); + }); + } - // Copy Skeleton auth views from the stubs folder - (new Filesystem)->copyDirectory(__DIR__.'/skeleton-stubs/views', resource_path('views')); + + protected static function compileControllerStub() + { + return str_replace( + '{{namespace}}', + Container::getInstance()->getNamespace(), + file_get_contents(__DIR__.'/skeleton-stubs/controllers/HomeController.stub') + ); } } diff --git a/src/SkeletonPresetServiceProvider.php b/src/SkeletonPresetServiceProvider.php index 5b6c7e7..f36b2f4 100644 --- a/src/SkeletonPresetServiceProvider.php +++ b/src/SkeletonPresetServiceProvider.php @@ -14,14 +14,16 @@ class SkeletonPresetServiceProvider extends ServiceProvider public function boot() { UiCommand::macro('skeleton', function ($command) { - SkeletonPreset::install(false); + SkeletonPreset::install(); + $command->info('Skeleton scaffolding installed successfully.'); - $command->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.'); - }); - UiCommand::macro('skeleton-auth', function ($command) { //optional - SkeletonPreset::install(true); - $command->info('Skeleton scaffolding with Auth views installed successfully.'); + if ($command->option('auth')) { + SkeletonPreset::installAuth(); + + $command->info('Skeleton auth scaffolding installed successfully.'); + } + $command->comment('Please run "npm install && npm run dev" to compile your fresh scaffolding.'); }); } diff --git a/src/skeleton-stubs/bootstrap.js b/src/skeleton-stubs/resources/js/bootstrap.js similarity index 100% rename from src/skeleton-stubs/bootstrap.js rename to src/skeleton-stubs/resources/js/bootstrap.js diff --git a/src/skeleton-stubs/_settings.scss b/src/skeleton-stubs/resources/sass/_settings.scss similarity index 100% rename from src/skeleton-stubs/_settings.scss rename to src/skeleton-stubs/resources/sass/_settings.scss diff --git a/src/skeleton-stubs/app.scss b/src/skeleton-stubs/resources/sass/app.scss similarity index 100% rename from src/skeleton-stubs/app.scss rename to src/skeleton-stubs/resources/sass/app.scss diff --git a/src/skeleton-stubs/skeleton.scss b/src/skeleton-stubs/resources/sass/skeleton.scss similarity index 100% rename from src/skeleton-stubs/skeleton.scss rename to src/skeleton-stubs/resources/sass/skeleton.scss diff --git a/src/skeleton-stubs/views/auth/login.blade.php b/src/skeleton-stubs/resources/views/auth/login.blade.php similarity index 100% rename from src/skeleton-stubs/views/auth/login.blade.php rename to src/skeleton-stubs/resources/views/auth/login.blade.php diff --git a/src/skeleton-stubs/views/auth/passwords/email.blade.php b/src/skeleton-stubs/resources/views/auth/passwords/email.blade.php similarity index 100% rename from src/skeleton-stubs/views/auth/passwords/email.blade.php rename to src/skeleton-stubs/resources/views/auth/passwords/email.blade.php diff --git a/src/skeleton-stubs/views/auth/passwords/reset.blade.php b/src/skeleton-stubs/resources/views/auth/passwords/reset.blade.php similarity index 100% rename from src/skeleton-stubs/views/auth/passwords/reset.blade.php rename to src/skeleton-stubs/resources/views/auth/passwords/reset.blade.php diff --git a/src/skeleton-stubs/views/auth/register.blade.php b/src/skeleton-stubs/resources/views/auth/register.blade.php similarity index 100% rename from src/skeleton-stubs/views/auth/register.blade.php rename to src/skeleton-stubs/resources/views/auth/register.blade.php diff --git a/src/skeleton-stubs/views/home.blade.php b/src/skeleton-stubs/resources/views/home.blade.php similarity index 100% rename from src/skeleton-stubs/views/home.blade.php rename to src/skeleton-stubs/resources/views/home.blade.php diff --git a/src/skeleton-stubs/views/layouts/app.blade.php b/src/skeleton-stubs/resources/views/layouts/app.blade.php similarity index 100% rename from src/skeleton-stubs/views/layouts/app.blade.php rename to src/skeleton-stubs/resources/views/layouts/app.blade.php diff --git a/src/skeleton-stubs/views/welcome.blade.php b/src/skeleton-stubs/resources/views/welcome.blade.php similarity index 100% rename from src/skeleton-stubs/views/welcome.blade.php rename to src/skeleton-stubs/resources/views/welcome.blade.php