{"id":14960824,"url":"https://github.com/donnyep/quarkasset","last_synced_at":"2025-09-02T10:41:51.687Z","repository":{"id":43879602,"uuid":"511556551","full_name":"DonnYep/QuarkAsset","owner":"DonnYep","description":"小巧轻量的Unity资源管理方案","archived":false,"fork":false,"pushed_at":"2025-04-24T07:22:31.000Z","size":2439,"stargazers_count":71,"open_issues_count":0,"forks_count":15,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-04-24T08:30:36.901Z","etag":null,"topics":["assetbundle","assetbundles","unity","unity-package-manager","unity3d","unitypackage","upm","upm-package"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DonnYep.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-07T14:18:38.000Z","updated_at":"2025-04-24T07:22:05.000Z","dependencies_parsed_at":"2024-01-03T04:30:48.838Z","dependency_job_id":"12e74b0f-b17a-4a85-b0f0-2bd72a2098c7","html_url":"https://github.com/DonnYep/QuarkAsset","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/DonnYep/QuarkAsset","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FQuarkAsset","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FQuarkAsset/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FQuarkAsset/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FQuarkAsset/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DonnYep","download_url":"https://codeload.github.com/DonnYep/QuarkAsset/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DonnYep%2FQuarkAsset/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273272530,"owners_count":25075977,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-02T02:00:09.530Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assetbundle","assetbundles","unity","unity-package-manager","unity3d","unitypackage","upm","upm-package"],"created_at":"2024-09-24T13:23:06.010Z","updated_at":"2025-09-02T10:41:51.614Z","avatar_url":"https://github.com/DonnYep.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License: MIT](https://img.shields.io/badge/License-MIT-brightgreen.svg)](LICENSE)\n[![Issues:Welcome](https://img.shields.io/badge/Issues-welcome-blue.svg)](https://github.com/DonnYep/QuarkAsset/wiki)\n\n# QuarkAsset\n\nQuarkAsset是一套轻量级的插件化Unity资源加载方案。 内置AssetDatabae与AssetBundle加载模式。加载模式皆支持引用计数，可实时查看资源信息。快速开发阶段可采用AssetDatabase模式，无需进行ab构建。调试阶段可采用AssetBundle模式，轻松构建ab资源。在构建ab时，支持对资源的加密。在Runtime加载资源时，可通过对应的密钥对资源进行解密。支持编辑内对包体分割，有效控制颗粒度。支持查看ab的依赖关系。内置BuildPipeline，可通过命令行实现自动化资源构建。支持构建预设，可版本控制构建profile预设。Jenkins自动化部署测试已通过。\n\n-----\n\n\u003ca name=\"标题导航\"\u003e\u003c/a\u003e\n\n# 标题导航\n- [QuarkAsset](#quarkasset)\n- [标题导航](#标题导航)\n  - [UPM支持](#upm支持)\n  - [QuarkEditor编辑器](#quarkeditor编辑器)\n    - [AssetDatabaseTab](#assetdatabasetab)\n      - [设置AssetBundle](#设置assetbundle)\n      - [查看AssetBundle中的资源](#查看assetbundle中的资源)\n      - [查看AssetBundle依赖](#查看assetbundle依赖)\n      - [拆分AssetBundle](#拆分assetbundle)\n        - [依据子文件夹拆分](#依据子文件夹拆分)\n        - [依据每个资源个体拆分](#依据每个资源个体拆分)\n    - [AssetBundleTab](#assetbundletab)\n      - [使用本地设置](#使用本地设置)\n      - [使用构建预设](#使用构建预设)\n    - [AssetDatasetTab](#assetdatasettab)\n  - [QuarkRuntime入口-QuarkConfig](#quarkruntime入口-quarkconfig)\n    - [未选择加载模式](#未选择加载模式)\n    - [AssetDatabase加载模式](#assetdatabase加载模式)\n    - [AssetBundle加载模式](#assetbundle加载模式)\n  - [QuarkRuntime应用实例](#quarkruntime应用实例)\n    - [自定义入口实例](#自定义入口实例)\n  - [QuarkRuntime](#quarkruntime)\n    - [QuarkResources加载](#quarkresources加载)\n      - [QuarkResources同步加载](#quarkresources同步加载)\n      - [QuarkResources异步加载](#quarkresources异步加载)\n    - [QuarkResources卸载](#quarkResources卸载)\n      - [QuarkResources卸载单个资源](#quarkResources卸载单个资源)\n      - [QuarkResources卸载assetbundle](#quarkResources卸载assetbundle)\n  - [BuildPipeline](#buildpipeline)\n    - [打包配置](#打包配置)\n    - [命令行打包](#命令行打包)\n  - [差量更新](#差量更新)\n    - [文件清单合并](#文件清单合并)\n  - [注意事项](#注意事项)\n\n---\n\n\u003ca name=\"UPM支持\"\u003e\u003c/a\u003e\n\n## UPM支持\n\n* QuarkAsset是完全插件化的unity库，文件夹结构遵循unityPackage规范。\n\n* UPM本地导入。选择Assets/QuarkAsset文件夹，拷贝到工程目录的Packages目录下，完成导入。\n\n* UPM从git导入。url链接: https://github.com/DonnYep/QuarkAsset.git#upm \n\n---\n\n\u003ca name=\"QuarkEditor编辑器\"\u003e\u003c/a\u003e\n\n## QuarkEditor编辑器\n\n* Quark编辑器打开路径为`Window\u003eQuarkAsset\u003eQuarkAssetEdior`。\n\n* 为实现团队协作，且灵活配置资源，Quark采用了`scriptableObject`作为资源寻址配置。\n\n* 配置文件可在Quark的编辑器最上方，点击`CreateDataset`生成。\n\n* 为方便阐述，下文统一采用`dataset`称呼Quark的资源寻址配置。\n\n* Quark编辑器一共含三个选项卡，分别为:`AssetDatabaseTab`、`AssetBundleTab`与`AssetDatasetTab`。\n\n* `AssetDatabaseTab`用于为`dataset`设置assetbundle与生成资源寻址信息.\n\n* `AssetBundleTab`用于为`dataset`生成assetbundle资源与相关处理。\n\n* `AssetDatasetTab`用于为`dataset`设置可识别的文件后缀名。\n\n\u003ca name=\"QuarkEditor-AssetDatabaseTab\"\u003e\u003c/a\u003e\n\n### AssetDatabaseTab\n\n![Quark_AssetDatabaseTab](Docs/Images/Quark_AssetDatabaseTab.png)\n\n* 此页面显示dataset中包含的AssetBundle信息。\n\n* 每一条bundle信息都可通过点击右键生成的菜单进行操作。\n\n* 每一条object信息都可通过点击右键生成的菜单进行操作。\n\n\u003ca name=\"设置AssetBundle\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 设置AssetBundle\n\n* 将需要被打包为ab的文件夹或资源拖拽入bundle label窗口，被拖入的资源会自动生成ab名称。点击上方Build按钮，完成dataset资源识别。\n  \n\u003ca name=\"查看AssetBundle中的资源\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 查看AssetBundle中的资源\n\n* 选中需要查看的bundle，在右侧label中可缩放查看缩略图信息。\n![Quark_AssetDatabaseTab_Preview](Docs/Images/Quark_AssetDatabaseTab_Preview.png)\n\n\n\u003ca name=\"查看AssetBundle依赖\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 查看AssetBundle依赖\n\n* 如图所示，选择显示区类别，可查看bundle的依赖关系以及subbundle信息。\n![Quark_AssetDatabaseTab_Dependent](Docs/Images/Quark_AssetDatabaseTab_Dependent.png)\n\n\n\u003ca name=\"拆分AssetBundle\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 拆分AssetBundle\n\n\u003ca name=\"依据子文件夹拆分\"\u003e\u003c/a\u003e\n\n##### \u0026nbsp; \u0026nbsp; 依据子文件夹拆分\n\n* Mark as splittable\n![Quark_AssetDatabaseTab_SplitBundle](Docs/Images/Quark_AssetDatabaseTab_SplitBundle.png)\n\n* 选择bundle，点击右键显示菜单，点击\"Mark as splittable\"选项，被选中的bundle会被标记为可分割的bundle，点击\"Build\"按钮，刷新信息。\n  \n* 分割bundle的逻辑为，若bundle存在子文件夹，则第一级的子文件夹被标记为新的bundle，在构建bundle时会生成新的bundle，同时父级bundle则不会再构建。\n\n* `Splittable`与`Extract`是互斥的。即Splittable为true时，Extract无法为true，反之亦然。\n\n\u003cbr\u003e\n\n\u003ca name=\"依据每个资源个体拆分\"\u003e\u003c/a\u003e\n\n##### \u0026nbsp; \u0026nbsp; 依据每个资源个体拆分\n\n* Mark as extract\n![Quark_AssetDatabaseTab_ExtractBundle](Docs/Images/Quark_AssetDatabaseTab_ExtractBundle.png)\n\n* 选择bundle，点击右键显示菜单，点击\"Mark as extract\"选项，被选中的bundle会被标记为可分割的bundle，点击\"Build\"按钮，刷新信息。\n  \n* 当bundle被标记为Extract时，此bundle下的所有资源对象都将作为`独立的assetbundle`进行构建。此功能适用于变更频繁的资产。\n\n* `Extract`与`Splittable`是互斥的。即Extract为true时，Splittable无法为true，反之亦然。\n\n\u003cdiv style=\"border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;\"\u003e\u003c/div\u003e\n\n\u003ca name=\"QuarkEditor-AssetBundleTab\"\u003e\u003c/a\u003e\n\n### AssetBundleTab\n\n* 此Tab用于ab打包操作。\n\n* 打包ab时需要选择ab所对应的平台。若需要拷贝到streamingAssets文件夹，则勾选CopyToStreamingAssets选项。\n\n* 打包ab配置有两种选择，第一种是`使用本地设置`，第二种是`使用构建预设`。\n  * `本地设置`指打包ab的配置存储在本地设备。配置无法对其进行版本管理。\n  * `构建预设`指生成一个预设文件，可以在不同机器上使用相同的配置进行ab打包，且可以被版本控制管理。\n\n* 配置打包设置时，在更改需要变更的参数后，其余参数推荐使用默认值。\n\n\u003ca name=\"使用本地设置\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 使用本地设置\n\n* 如图，调整变更自己需要的参数。\n![Quark_AssetBundleTab](Docs/Images/Quark_AssetBundleTab.png)\n\n\u003ca name=\"使用构建预设\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; 使用构建预设\n\n* 使用构建预设，如图。勾选`Use build profile`选项，勾选后切换为预设构建。\n![Quark_AssetBundleTab_UseBuildProfile](Docs/Images/Quark_AssetBundleTab_UseBuildProfile.png)\n\n\u003cbr\u003e\n\n* 当构建预设不存在时，点击`+`按钮，生成一个构建预设。\n![Quark_AssetBundleTab_CreateBuildProfile](Docs/Images/Quark_AssetBundleTab_CreateBuildProfile.png)\n\n\u003cbr\u003e\n\n* 构建预设与本地配置大体相同。\n![Quark_AssetBundleTab_BuildProfile](Docs/Images/Quark_AssetBundleTab_BuildProfile.png)\n\n\n\u003cdiv style=\"border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;\"\u003e\u003c/div\u003e\n\n\u003ca name=\"QuarkEditor-AssetDatasetTab\"\u003e\u003c/a\u003e\n\n### AssetDatasetTab\n![Quark_AssetDatasetTab](Docs/Images/Quark_AssetDatasetTab.png)\n\n* Dataset通过文件后缀名进行识别。 此列表表示所有可以被quark识别的文件后缀名类型。若自定义的后缀名未被quark识别，则在此页面增加需要被识别的后缀名。\n\n-----\n\n\u003ca name=\"QuarkRuntime入口\"\u003e\u003c/a\u003e\n\n## QuarkRuntime入口-QuarkConfig\n\n* 选择合适初始化入口，挂载`QuarkConfig`脚本。\n\n\u003ca name=\"QuarkConfig未选择加载模式\"\u003e\u003c/a\u003e\n\n### 未选择加载模式\n![QuarkConfig_None](Docs/Images/QuarkConfig_None.png)\n\n\u003cdiv style=\"border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;\"\u003e\u003c/div\u003e\n\n\u003ca name=\"QuarkConfig-AssetDatabase加载模式\"\u003e\u003c/a\u003e\n\n### AssetDatabase加载模式\n![QuarkConfig_AssetDatabase](Docs/Images/QuarkConfig_AssetDatabase.png)\n\n* 为`QuarkAssetDataset`赋予build好的dataset，即完成配置。\n\n\u003cdiv style=\"border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;\"\u003e\u003c/div\u003e\n\n\u003ca name=\"QuarkConfig-AssetBundle加载模式\"\u003e\u003c/a\u003e\n\n### AssetBundle加载模式\n![QuarkConfig_AssetBundle](Docs/Images/QuarkConfig_AssetBundle.png)\n\n* AssetBundle模式下默认采用StreamingAssets路径加载。\n\n* 若build后的ab文件处于StreamingAssets目录下的其他路径，勾选`EnableRelativeBuildPath`选项。勾选`EnableRelativeBuildPath`表示为采用`StreamingAssets`目录下的相对路径进行加载，需要在`RelativeBuildPath`中填入相对路径的地址。\n\n* 若在资源构建阶段进行了加密，则在Encryption折叠选项下填入对应的密钥与数字，Quark会在runtime自动解密。\n\n* QuarkRuntime加载资源会自动计算引用计数，并根据引用计数加载或卸载assetbundle，无需手动管理ab资源。\n\n-----\n    \n\n\u003ca name=\"QuarkRuntime应用实例\"\u003e\u003c/a\u003e\n\n## QuarkRuntime应用实例\n\n\u003ca name=\"自定义入口实例\"\u003e\u003c/a\u003e\n\n### 自定义入口实例\n\n```csharp\nusing Quark;\nusing Quark.Asset;\nusing System.IO;\nusing UnityEngine;\npublic class MyLauncher : MonoBehaviour\n{\n    /// \u003csummary\u003e\n    /// QuarkAssetLoadMode下AssetDatabase模式所需的寻址数据。\n    /// \u003csee cref=\"Quark.QuarkLoadMode\"/\u003e\n    /// \u003c/summary\u003e\n    [SerializeField] QuarkDataset quarkDataset;\n    /// \u003csummary\u003e\n    /// ab Build 的相对地址。\n    /// \u003c/summary\u003e\n    [SerializeField] string streamingRelativeBuildPath;\n    /// \u003csummary\u003e\n    /// 对称加密密钥。\n    /// \u003c/summary\u003e\n    [SerializeField] string manifestAesKey;\n    /// \u003csummary\u003e\n    /// 加密偏移量。\n    /// \u003c/summary\u003e\n    [SerializeField] ulong encryptionOffset;\n    private void Start()\n    {\n        //根据需要调用函数\n    }\n    void LanchAssetBundleMode()\n    {\n        //以AssetBundle模式启动\n        var myPath = Path.Combine(Application.streamingAssetsPath, streamingRelativeBuildPath);\n        QuarkResources.LaunchAssetBundleMode(myPath, () =\u003e\n        {\n                //启动成功，进入游戏逻辑\n            }, (errorMsg) =\u003e\n            {\n                //启动失败，处理异常\n            }, manifestAesKey, encryptionOffset);\n    }\n    void LanchAssetDatabaseMode()\n    {\n        //以AssetDatabase(unity editor 调试)模式启动。\n        QuarkResources.LaunchAssetDatabaseMode(quarkDataset, () =\u003e\n        {\n                //启动成功，进入游戏逻辑\n            }, (errorMsg) =\u003e\n            {\n                //启动失败，处理异常\n            });\n    }\n}\n```\n-----\n\n\u003ca name=\"QuarkRuntime\"\u003e\u003c/a\u003e\n\n## QuarkRuntime\n\n* Quark的运行时类为为`QuarkResources`。\n\n* 加载资源时输入的名称可采用以下三种范式：\n    * 1、资源名。      \n    * 2、资源名.后缀   \n    * 3、资源路径      \n\n* 加载\u0026卸载时请注意以下内容：\n    * 1、资源名大小写敏感的资源名 。示例：MyAudio\n    * 2、后缀名大小写不敏感。示例：MyAudio.mp3或MyAudio.MP3\n    * 3、资源路径大小写敏感，地址须以Assets/开头。示例：Assets/Audio/MyAudio.mp3。采用地址加载时，后缀名需要小写。\n\n\u003ca name=\"QuarkResources加载\"\u003e\u003c/a\u003e\n\n### QuarkResources加载\n\n\u003ca name=\"QuarkResources同步加载\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; QuarkResources同步加载\n\n```csharp\nvar myAudio = QuarkResources.LoadAsset\u003cAudioClip\u003e(\"MyAudio\");// 资源名加载\nvar myText = QuarkResources.LoadAsset\u003cTextAsset\u003e(\"MyText.json\");//资源名.后缀名加载\nvar myTexture = QuarkResources.LoadAsset\u003cTexture\u003e(\"Assets/Textures/MyTexture.png\");//完整路径加载。注意路径需要采用 / ，\\\\不支持！\n```\n\n\u003ca name=\"QuarkResources异步加载\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; QuarkResources异步加载\n\n```csharp\nQuarkResources.LoadAssetAsync\u003cAudioClip\u003e(\"MyAudio\",res=\u003e \n    //加载完成回调，获取资源, do sth\n});\nQuarkResources.LoadAssetAsync\u003cTextAsset\u003e(\"MyText.json\",res=\u003e \n{\n    //加载完成回调，获取资源, do sth\n});\nQuarkResources.LoadAssetAsync\u003cTexture\u003e(\"Assets/Textures/MyTexture.png\",res=\u003e \n{\n    //加载完成回调，获取资源, do sth\n});\n//异步加载场景\nQuarkResources.LoadSceneAsync(\"MyScene\",progress=\u003e{Debug.Log(progress);},()=\u003e{Debug.Log(\"Load Done\");},false);\n```\n\n\n\n\u003ca name=\"QuarkResources卸载\"\u003e\u003c/a\u003e\n\n### QuarkResources卸载\n\n\u003ca name=\"QuarkResources资源单个卸载\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; QuarkResources卸载单个资源\n\n* 卸载与加载相同，都支持三种三种范式：\n    * 1、资源名。      \n    * 2、资源名.后缀   \n    * 3、资源路径      \n\n```csharp\n//资源名卸载单个资源\nQuarkResources.UnloadAsset(\"MyAudio\"); \n//资源名.后缀卸载单个资源\nQuarkResources.UnloadAsset(\"MyText.json\"); \n//资源路径卸载单个资源\nQuarkResources.UnloadAsset(\"Assets/Textures/MyTexture.png\"); \n//卸载场景\nQuarkResources.UnloadSceneAsync(\"MyScene\",progress=\u003e{Debug.Log(progress);},()=\u003e{Debug.Log(\"Unload Done\")); \n```\n\n\u003ca name=\"QuarkResources卸载assetbundle\"\u003e\u003c/a\u003e\n\n#### \u0026nbsp; QuarkResources卸载assetbundle\n\n```csharp\n//卸载assetbundle\nQuarkResources.UnloadAssetBundle(\"MyBundle\",true); \n```\n\u003cdiv style=\"border-top: 1px solid black; margin-top: 20px; margin-bottom: 20px;\"\u003e\u003c/div\u003e\n\n\u003ca name=\"QuarkResources获取资源信息\"\u003e\u003c/a\u003e\n\n### QuarkResources获取资源信息\n\n```csharp\n  //获取单个资源的状态信息\n  QuarkResources.GetObjectInfo(myAssetName, out var info);\n```\n\u003ca name=\"QuarkResources获取包体信息\"\u003e\u003c/a\u003e\n\n### QuarkResources获取包体信息\n\n```csharp\n  //获取一个包体的状态信息\n  QuarkResources.GetBundleInfo(myBundleName, out var info);\n```\n\n-----\n\n\u003ca name=\"BuildPipeline\"\u003e\u003c/a\u003e\n\n## BuildPipeline\n\n* Quark支持自动化流水线，提供构建静态函数，目前测试可使用Jenkins进行自动化部署。\n\n\u003ca name=\"打包配置\"\u003e\u003c/a\u003e\n\n### 打包配置\n\n* 选择一个项目中使用的QuarkAssetDataset类型文件，将文件名更改为QuarkAssetDataset后，放到Assets根目录下。放置完毕后路径应与如下相同。\n```\nAssets/QuarkAssetDataset.asset\n```\n\u003ca name=\"命令行打包\"\u003e\u003c/a\u003e\n\n### 命令行打包\n\n* 命令行可调用的API如下：\n\n```csharp\n//打包指定平台的资源\nQuarkBuildPipeline.BuildAssetBundle(BuildTarget buildTarget);\n//通过预设进行构建\nQuarkBuildPipeline.BuildAssetBundleByProfile(string datasetPath, string buildProfilePath);\n```\n\n* 详细的命令可查看`QuarkBuildPipeline.cs`类。\n\n---\n\n\u003ca name=\"差量更新\"\u003e\u003c/a\u003e\n\n## 差量更新\n\n* Quark支持母包内嵌加热更下载。\n\n* 目前支持StreamingAssets与persistentdatapath地址的同时加载。\n\n\u003ca name=\"文件清单合并\"\u003e\u003c/a\u003e\n\n### 文件清单合并\n\n* 使用如下API，对不同的文件清单进行合并，获得合并的文件清单后即可使用不同路径下的ab资源。\n```csharp\nQuarkUtility.Manifest.MergeManifest(srcManifest,diffManifest,out var mergedManifest);\n```\n---\n\n\u003ca name=\"注意事项\"\u003e\u003c/a\u003e\n\n## 注意事项\n\n* 自动化部署构建资源请根据打包策略选择合适的清理方式。建议采用所有资源重新构建的策略。\n\n**[回到最上层](#标题导航)**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnyep%2Fquarkasset","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdonnyep%2Fquarkasset","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdonnyep%2Fquarkasset/lists"}