The Twinpack Package Manager is a powerful and user-friendly package management tool for TwinCAT libraries. It is designed to empower the TwinCAT community by enabling sharing and distribution of libraries. It acts as a versatile platform similarly to NuGet (but with a PLC touch), allowing users to efficiently manage and deploy their custom-built modules.
To use the Twinpack Package Manager, follow these steps:
To install a package, follow these steps:
Twinpack supports the NuGet protocol for packages, including repositories hosted by Beckhoff since TwinCAT 4026.xx. Follow these steps to add a new repository to Twinpack:
https://twinpack.dev
. Log in is optional. However, logging in will display your private packages and/or packages that are licensed to you by Zeugwerk. If you forgot your Twinpack login, reset it here.https://public.tcpkg.beckhoff-cloud.com/api/v1/feeds/stable
, log in in is mandatory. Use your Beckhoff credentials to connect. If you don't have a Beckhoff login, register here.There are multiple ways to publish a package on Twinpack and you can chose how you want to publish your packages depending on how you want to create releases.
The most straight forward way to publish a package, which you release on GitHub anyway, is to use the Twinpack Registry.
repositories.txt
file, similarily to this commit.If you have a CI/CD environment it can be benefical to you to upload your package by using the Twinpack Commandline interface (see the TwinpackCli
project in Twinpack). For GitHub, we tried to streamline this process as much as possible by providing a GitHub action, which will do this for you, see twinpack-action for details.
Note, if you don't have your own CI/CD environment, this action can be used to implement CI/CD on the Zeugwerk CI/CD environment, unlike Twinpack we can only provide this environment free of charge in a limited amount (at the moment 30 buildactions / month)
This is the most straight forward way to publish a package if you want to publish your library directly from your IDE
After the initial upload of your library as a package, you may publish newer versions of your library or you can also modify the current version by right clicking on the PLC item and then on Twinpack -> Modify.... Users of Twinpack will be notified whenever a newer version is available in the Twinpack Catalog.
Twinpack provides several commands to manage and configure packages for your projects and PLCs via the commandline rather than the IDE - This is very useful for CI/CD. Note that all commands by default will not use Beckhoff's Automation Interface and instead manipulate files directly. Installing and uninstalling packages on the system is not possible with only file manipulations, instead you have to manually install the downloaded packages via 'RepTool'. However, it is also possible to pass a --headed
argument to make twinpack perform the actions with the Automation Interface instead, which enables installing and uninstalling as well if needed.
Below is a brief summary of the available commands, along with example usage. For more detailed information, you can always use the --help
option with any command.
config
Configures or modifies the package source repositories used by Twinpack. The configuration is saved in "%APPDATA%\Zeugwerk\Twinpack\sourceRepositories.json", login information is stored in the Windows Credentials Manager.
Example Usage:
twinpack.exe config --source https://my-packages.com --type "Beckhoff Repository"
twinpack.exe config --purge --source "https://my-packages.com" --type "NuGet Repository" --username "MyUsername" --password "MyPassword"
twinpack.exe config --reset
search
Searches packages in all configured package sources
Example Usage:
twinpack.exe search
twinpack.exe search MySearchTerm
list
Lists packages configured in the .Zeugwerk/config.json file or the first solution found in the current directory.
Example Usage:
twinpack.exe list --plc MainPLC
twinpack.exe list MySearchTerm
download
Downloads package(s) from the configured sources to your system, the download folder is ".Zeugwerk/libraries".
Example Usage:
twinpack.exe download --package PackageName
twinpack.exe download --package PackageName --version 2.3.4
set-version
Sets the version of the PLC(s). If a PLC is part of a larger framework, the command can also be used to update all packages, which are part of the same framework.
Example Usage:
twinpack.exe set-version 1.1.0
twinpack.exe set-version 1.1.0 --plc MyPlc
twinpack.exe set-version 1.1.0 --plc MyPlc --sync-framework-packages
add
Adds package(s) to a specified project and PLC using the configured sources. The command downloads, installs and adds the packages to the PLĆ's references - including dependencies if requested
Example Usage:
twinpack.exe add --project MyProject --plc MainPLC --package PackageName
twinpack.exe add --project MyProject --plc MainPLC --package PackageName --version 1.0.0
remove
Removes package(s) from a specified project and PLC.
Example Usage:
twinpack.exe remove --project MyProject --plc MainPLC --package PackageName
twinpack.exe remove --project MyProject --plc MainPLC
help
For detailed information about each command and its available options, you can use the --help argument:
Example Usage:
twinpack.exe <command> --help
🌟 Make sure to follow this project by leaving a star or simply follow us, to always get notified if a newer version of Twinpack is released.
📺 We have also created a short introductionary video on how to install and use Twinpack