From 063b23226160f52401979165e8d26a3f288940b1 Mon Sep 17 00:00:00 2001 From: mashirozx Date: Wed, 14 Jul 2021 10:04:54 +0800 Subject: [PATCH] Update vite multiple input build configuration --- app/assets/.gitignore | 2 ++ app/controllers/base-controller.php | 7 +++---- app/functions.php | 3 +++ app/helpers/admin-page-helper.php | 20 ++++++++++---------- app/helpers/vite-helper.php | 22 ++++++++++++---------- app/lib/base-class.php | 9 +++++++++ app/models/base-model.php | 6 +++--- package.json | 4 +++- vite.config.ts | 9 ++++----- 9 files changed, 49 insertions(+), 33 deletions(-) create mode 100644 app/assets/.gitignore create mode 100644 app/lib/base-class.php diff --git a/app/assets/.gitignore b/app/assets/.gitignore new file mode 100644 index 0000000..399f102 --- /dev/null +++ b/app/assets/.gitignore @@ -0,0 +1,2 @@ +main/ +admin/ diff --git a/app/controllers/base-controller.php b/app/controllers/base-controller.php index 98cc774..1970882 100644 --- a/app/controllers/base-controller.php +++ b/app/controllers/base-controller.php @@ -2,17 +2,16 @@ namespace Sakura\Controllers; +use Sakura\Lib\BaseClass; + /** * The controller abstract base * @since 1.0.0 * @license GPLv3 * @author mashirozx */ -class BaseController +class BaseController extends BaseClass { - public static $version = SAKURA_VERSION; - public static $text_domain = SAKURA_TEXT_DOMAIN; - /** * The rest API request parameters * @since 0.0.1 diff --git a/app/functions.php b/app/functions.php index 5883e78..b0c03d1 100644 --- a/app/functions.php +++ b/app/functions.php @@ -5,6 +5,9 @@ define('SAKURA_VERSION', wp_get_theme()->get('Version')); define('SAKURA_TEXT_DOMAIN', wp_get_theme()->get('TextDomain')); +define('SAKURA_DEVEPLOMENT', false); +define('SAKURA_DEVEPLOMENT_HOST', 'http://127.0.0.1:9000'); + // PHP loaders require_once(__DIR__ . '/loader.php'); diff --git a/app/helpers/admin-page-helper.php b/app/helpers/admin-page-helper.php index c6eb100..7b7a8fe 100644 --- a/app/helpers/admin-page-helper.php +++ b/app/helpers/admin-page-helper.php @@ -5,11 +5,8 @@ namespace Sakura\Helpers; use Sakura\Helpers\ViteHelper; use Sakura\Controllers\InitStateController; -class AdminPageHelper +class AdminPageHelper extends ViteHelper { - public static $version = SAKURA_VERSION; - public static $text_domain = SAKURA_TEXT_DOMAIN; - public $page_title; public $menu_title; public $menu_slug; @@ -35,16 +32,19 @@ class AdminPageHelper { if ("appearance_page_{$this->menu_slug}" === $hook) { $this->enqueue_common_scripts(); - // $this->enqueue_development_scripts(); - $this->enqueue_production_scripts(); + if (SAKURA_DEVEPLOMENT) { + $this->enqueue_development_scripts(); + } else { + $this->enqueue_production_scripts(); + } } } public function enqueue_development_scripts() { - wp_enqueue_script('[type:module]vite-client', ViteHelper::$development_host . '/@vite/client', array(), null, false); + wp_enqueue_script('[type:module]vite-client', self::$development_host . '/@vite/client', array(), null, false); - wp_enqueue_script('[type:module]dev-main', ViteHelper::$development_host . '/src/admin/main.ts', array(), null, true); + wp_enqueue_script('[type:module]dev-main', self::$development_host . '/src/admin/main.ts', array(), null, true); wp_localize_script('[type:module]dev-main', 'InitState', (new InitStateController())->get_initial_state()); } @@ -52,8 +52,8 @@ class AdminPageHelper public function enqueue_production_scripts() { $entry_key = 'src/admin/main.ts'; - $assets_base_path = get_template_directory_uri() . '/assets/dist/'; - $manifest = ViteHelper::get_manifest_file(); + $assets_base_path = get_template_directory_uri() . '/assets/admin/'; + $manifest = self::get_manifest_file('admin'); // wp_enqueue_script('[type:module]chunk-vendors.js', $assets_base_path . $manifest[$entry_key]['file'], array(), null, false); diff --git a/app/helpers/vite-helper.php b/app/helpers/vite-helper.php index b161396..6b1441e 100644 --- a/app/helpers/vite-helper.php +++ b/app/helpers/vite-helper.php @@ -2,19 +2,21 @@ namespace Sakura\Helpers; +use Sakura\Lib\BaseClass; use Sakura\Controllers\InitStateController; -class ViteHelper +class ViteHelper extends BaseClass { - // TODO: use a common .env file - // public $development_host = 'http://192.168.28.26:9000'; - public static $development_host = 'http://127.0.0.1:9000'; + public static $development_host = SAKURA_DEVEPLOMENT_HOST; function __construct() { add_action('wp_enqueue_scripts', [$this, 'enqueue_common_scripts']); - // add_action('wp_enqueue_scripts', [$this, 'enqueue_development_scripts']); - add_action('wp_enqueue_scripts', [$this, 'enqueue_production_scripts']); + if (SAKURA_DEVEPLOMENT) { + add_action('wp_enqueue_scripts', [$this, 'enqueue_development_scripts']); + } else { + add_action('wp_enqueue_scripts', [$this, 'enqueue_production_scripts']); + } // add tag filters add_filter('script_loader_tag', [$this, 'script_tag_filter'], 10, 3); add_filter('style_loader_tag', [$this, 'style_tag_filter'], 10, 3); @@ -32,8 +34,8 @@ class ViteHelper public function enqueue_production_scripts() { $entry_key = 'src/main.ts'; - $assets_base_path = get_template_directory_uri() . '/assets/dist/'; - $manifest = $this->get_manifest_file(); + $assets_base_path = get_template_directory_uri() . '/assets/main/'; + $manifest = $this->get_manifest_file('main'); // wp_enqueue_script('[type:module]chunk-entrance.js', $assets_base_path . $manifest[$entry_key]['file'], array(), null, false); @@ -91,9 +93,9 @@ class ViteHelper return $tag; } - public static function get_manifest_file() + public static function get_manifest_file(string $namespace) { - $manifest = file_get_contents(__DIR__ . '/../assets/dist/manifest.json'); + $manifest = file_get_contents(__DIR__ . "/../assets/{$namespace}/manifest.json"); return json_decode($manifest, true); } } diff --git a/app/lib/base-class.php b/app/lib/base-class.php new file mode 100644 index 0000000..34c5e72 --- /dev/null +++ b/app/lib/base-class.php @@ -0,0 +1,9 @@ +