gin0115 / vite-manifest-parser
Vue 3, VITE 资产清单文件的简单解析器。
Requires
- php: >=7.2.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-26 03:53:27 UTC
README
这是一个基本的 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.2
、7.3
、7.4
、8.0
和 8.1
版本的 PHP 上进行测试。在 windows 和 linux 操作系统上。请注意,Windows 版本运行的测试较少。