unity-packer is a simple dotnet tool to pack and unpack Unity's own UnityPackage file format (usually associated with the .unitypackage extension). It's very useful for CI servers.
The UnityPackage format is not open and everything this utility does is based on reverse engineering the fairly simplistic file format. Thus it might not fit all specifications, as they are not public.
Note that this is not officially supported or endorsed by Unity. Use at your own risk.
Make sure you have .Net Core 3.1 or later
Install unity-packer with the following command:
dotnet tool install --global unity-packer
To pack some files, use the pack subcommand:
unity-packer pack <unity package> <inputfile> <targetfile> ...
For example, this will create a file Output.unitypackage
with a file Assets/Editor/TargetExportPath.cs
with the contents of the local file MyInputFile.cs
unity-packer pack Output.unitypackage MyInputFile.cs Assets/Editor/TargetExportPath.cs```
To unpack some files, use the unpack subcommand:
unity-packer unpack <unity package> <Project Folder>
For example, the following command will unpack all the files from Input.unitypackage
into Projectfolder
unity-packer unpack Input.unitypackage ProjectFolder