gin0115/vite-manifest-parser

Vue 3, VITE 资产清单文件的简单解析器。

0.1.0 2022-07-25 22:09 UTC

This package is auto-updated.

Last update: 2024-09-26 03:53:27 UTC


README

GitHub_CI GitHub release (latest SemVer including pre-releases) codecov Scrutinizer Code Quality GitHub issues Open Source Love

这是一个基本的 vite 清单文件解析器,允许在 PHP 中包含 vue3-cli/vite 项目。

安装

composer require gin0115/vite-manifest-parser

用法

为了适应使用 vite 编译的 vue 3 资产添加的随机哈希,这个库允许轻松解析所需的资产。

示例 Vite 清单

{
  "main.js": {
    "file": "assets/main.4889e940.js",
    "src": "main.js",
    "isEntry": true,
    "dynamicImports": ["views/foo.js"],
    "css": ["assets/main.b82dbe22.css"],
    "assets": ["assets/asset.0ab0f9cd.png"]
  },
  "views/foo.js": {
    "file": "assets/foo.869aea0d.js",
    "src": "views/foo.js",
    "isDynamicEntry": true,
    "imports": ["_shared.83069a53.js"]
  },
  "_shared.83069a53.js": {
    "file": "assets/shared.83069a53.js"
  }
}

然后您可以使用以下方式访问资产

$manifest = new ViteManifestParser('https://www.url.tld/dist', 'path/to/project/vite.json');

// To access the main.js file url
// Just pass in the file name.
$mainJsUrl = $manifest->getEntryScriptUri('main.js');

// Returns https://www.url.tld/dist/assets/main.4889e940.js

// To access all CSS files.
$cssFiles = $manifest->getEntryCssUris('main.js');

// Returns [
//   'https://www.url.tld/dist/assets/main.b82dbe22.css'
// ];

API

ViteManifestParser()

构造函数接受两个属性

  • assetUri - 资产的基本 URL。
  • manifestPath - vite 清单文件的路径。
$parser = new ViteManifestParser('https://www.url.tld/dist', 'path/to/project/vite.json');

// This can also be used to set the base path, based on the environment.
$assetUrl = App::environment('local')
    ? 'https://:8080/dist'
    : 'https://www.url.tld/dist';

$parser = new ViteManifestParser($assetUrl, 'path/to/project/vite.json');

getAssetsUri

@return string 资产的基本 URL。

返回定义的 assetUri,并删除任何尾随斜杠。

$parser = new ViteManifestParser('https://www.url.tld/dist/', 'path/to/project/vite.json');

$parser->getAssetsUri(); // Returns 'https://www.url.tld/dist'

getAssetsForVueFile

@param string $fileName Vue 文件的名称。
@return array<string, string|string[]> Vue 文件的资产。
@throws \Exception - 清单中不存在文件。
@throws \Exception - 文件资产为空或不正确。

文件资产属性
  • file: string
  • src: string
  • isEntry?: bool (可选)
  • isDynamicEntry?: bool (可选)
  • dynamicImports?: string[] (可选)
  • css?: string[] (可选)
  • assets?: string[] (可选)
  • imports?: string[] (可选)

返回给定 Vue 文件在清单中定义的所有详细信息的数组。

$parser = new ViteManifestParser('https://www.url.tld/dist', 'path/to/project/vite.json');

$fileDetails = $parser->getAssetsForVueFile('main.js');

/* 
 * "file => "assets/main.4889e940.js",
 * "src => "main.js",
 * "isEntry => true,
 * "dynamicImports => ["views/foo.js"],
 * "css => ["assets/main.b82dbe22.css"],
 * "assets => ["assets/asset.0ab0f9cd.png"]
 */

如果清单文件本身有问题或清单中要求的文件不存在,将抛出异常。

getEntryScriptUri

@param string $fileName 资产文件的名称
@return string|null 资产 URL 或文件不存在时返回 null。

这将只返回主 JS 文件 URI,并将预置于 assetUri 前面。

$parser = new ViteManifestParser('https://www.url.tld/dist', 'path/to/project/vite.json');

$mainJsUrl = $parser->getEntryScriptUri('main.js');

// Returns https://www.url.tld/dist/assets/main.4889e940.js

getAssetsForVueFile() 不同,如果文件不存在,它不会抛出异常,而是只返回 null。

getEntryCssUris

@param string $fileName 资产文件的名称
@return string[] CSS 资产 URL。

这将返回为入口文件定义的所有 CSS 文件。这将预置于 assetUri 前面。

$parser = new ViteManifestParser('https://www.url.tld/dist', 'path/to/project/vite.json');

$cssFiles = $parser->getEntryCssUris('main.js');

// Returns [
//   'https://www.url.tld/dist/assets/main.b82dbe22.css'
// ];

getAssetsForVueFile() 不同,如果文件不存在,它不会抛出异常,而是只返回空数组。

变更日志

  • 0.1.0 - 初始发布。

贡献

如果您想为此项目做出贡献,请提出问题或拉取请求。所有拉取请求都必须通过 PHPUnit、PHPStan 和 PHP Code Sniffer 的测试套件。要运行这些测试,请执行以下操作。

  • composer coverage - 运行 PHPUnit 测试用例,并将创建一个 HTML 覆盖率报告(如果您已安装有效的覆盖率驱动程序)
  • composer test - 运行 PHPUnit 测试用例,不生成覆盖率报告。
  • composer sniff - 在项目中运行 PHP Code Sniffer。
  • composer fixer - 使用 PHPCBF 对文件运行到定义的规则(PSR12)。
  • composer analyse - 运行项目的 PHPStan 规则集。
  • composer all - 运行所有上述操作,并在 GH Action 管道中运行。

所有代码都必须通过所有这些套件在 7.27.37.48.08.1 版本的 PHP 上进行测试。在 windows 和 linux 操作系统上。请注意,Windows 版本运行的测试较少。