gymmed/bagisto-vite-parser

在 bagisto 项目中查找使用 vite laravel 库构建的文档的便捷方法。在使用 config/bagisto-vite 时,有助于找到 manifest.json。

dev-main 2024-09-30 13:25 UTC

This package is auto-updated.

Last update: 2024-09-30 14:14:24 UTC


README

Bagisto Vite 解析器


Parses bagisto vite document.

在 bagisto 项目中查找使用 vite laravel 库构建的文档的便捷方法。在配置 config/bagisto-vite 时,有助于找到 manifest.json

安装

您可以通过 composer 安装此包

composer require gymmed/bagisto-vite-parser

使用场景

Dompdf 及其 Laravel 包装器,laravel-dompdf,仅支持直接 CSS 或外部 CSS 文件链接。然而,这些 CSS 文件需要真实的相对路径,而 Vite 在 Laravel 中使用哈希文件名以避免名称冲突。此库提供了一种简单的方法来从 config/bagisto-vite 中检索正确的 CSS 路径,专门为 Bagisto 设计,而不是为一般 Laravel 使用。

使用方法

在您的 config/bagisto-vite.php 中,在 viters 部分下为您的包添加一个新条目。示例

    return [
        'viters' => [
            ...
            'myNamespace' => [
                'hot_file'                 => 'myNamespace-default-vite.hot',
                'build_directory'          => 'themes/myNamespace/default/build',
                'package_assets_directory' => 'src/Resources/assets',
            ],
        ],
    ];

这应该与您包中的 laravel 插件 配置在 vite.config.js 中的配置相对应。示例

plugins: [
    ...
    vue(),

    laravel({
        hotFile: "../../../public/myNamespace-default-vite.hot",
        publicDirectory: "../../../public",
        buildDirectory: "themes/myNamespace/default/build",
        input: [
            "src/Resources/assets/css/app.css",
            "src/Resources/assets/js/app.js",
        ],
        refresh: true,
    }),
],

为了获取文档的真实路径,我们编写

use GymMed\BagistoViteParser;

//provide full path
$viteDocumentsPaths = BagistoViteParser::getDocumentsPaths(
    [
        'src/Resources/assets/css/app.css',
        'src/Resources/assets/js/app.js'
    ],
    'myNamespace'
);

返回的结果

array:2 [▼
  0 => "...\bagisto\public\themes/myNamespace/befault/build/assets/app-2bf84331.css"
  1 => "...\bagisto\public\themes/myNamespace/default/build/assets/app-c35c0f3a.js"
]

然后您可以获取单个文档的路径

use GymMed\BagistoViteParser;

//provide full path
$viteDocumentsPaths = BagistoViteParser::getDocumentPath(
    'src/Resources/assets/css/app.css',
    'myNamespace'
);