The Package Manager was introduced in Rhino 7. It makes it easier to discover, install and manage Grasshopper plug-ins from within Rhino. This guide will describe how to create a package from a Grasshopper plug-in that can be published to the package server.
"/Applications/Rhino 8.app/Contents/Resources/bin/yak"
.First, let’s assume you have a folder on your computer which contains all the files that you would like to distribute in your package. Something like this…
C:\Users\Bozo\dist
├── Marmoset.gha
├── icon.png
└── misc\
├── README.md
└── LICENSE.txt
We’re going to use the Yak CLI tool to create the package, so open up a Command Prompt and navigate to the directory above.
> cd C:\Users\Bozo\dist
Now, we need a manifest.yml
file! You can easily create your own by studying
the Manifest Reference Guide. Alternatively, you can use the spec
command to generate a skeleton file. We’ll do the latter here.
> "C:\Program Files\Rhino 8\System\Yak.exe" spec
Inspecting content: Marmoset.gha
---
name: marmoset
version: 1.0.0
authors:
- Park Ranger
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: https://example.com
Saved to C:\Users\Bozo\dist\manifest.yml
The spec
command takes a look at the current directory and, if present, will
glean useful information from the .gha
assembly and use it generate a
manifest.yml
with name, version, authors, etc. pre-populated. If you haven’t
added this information, then placeholders will be used.
spec
command is useful for generating the
manifest.yml file initially. Once you have one, keep it with your project and
update it for each release.Open the manifest file with your favourite editor and fill in the gaps.
Afterwards, you should have something that looks a little like this…
---
name: marmoset
version: 1.0.0
authors:
- Park Ranger
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: https://example.com
icon: icon.png
keywords:
- mammal
Now that we have a manifest file, we can build the package!
> "C:\Program Files\Rhino 8\System\Yak.exe" build
Building package from contents of C:\Users\Bozo\dist
Found manifest.yml for package: marmoset (1.0.0)
Inspecting content: Marmoset.gha
Creating marmoset-1.0.0-rh6_18-any.yak
---
name: marmoset
version: 1.0.0
authors:
- Will Pearson
description: >
This plug-in does something. I'm not really sure exactly what it's supposed to
do, but it does it better than any other plug-in.
url: example.com
keywords:
- mammal
- guid:c9beedb9-07ec-4974-a0a2-44670ddb17e4
C:\Users\Bozo\dist\marmoset-1.0.0-rh6_18-any.yak
├── Marmoset.dll
├── Marmoset.gha
├── manifest.yml
├── misc\LICENSE.txt
└── misc\README.md
rh6_18-any
). The first part, rh6_18
, is inferred from the version of Grasshopper.dll or Rhinocommon.dll that is referenced in the plug-in project. The second part, any
, refers to the platform that the plug-in is intended for. To build a platform-specfic package, run the build
command again with the --platform <platform>
argument, where <platform>
can be either win
or mac
.rh6*
distribution tag, it will not be installable for Rhino 7. If your plug-in also works in Rhino 7, please mark it as compatible by copying the .yak file, updating the distribution tag part of the filename (i.e. rh6_18
➡ rh7_0
) and pushing both to the package server.Congratulations! 🙌 You’ve just created a package for your Grasshopper plug-in.
Next Steps
Now that you’ve created a package, push it to the package server to make it available in the package manager!