Create a First-Generation Managed Package using Salesforce DX

If you’re an ISV, you want to build a managed package. A managed package is a bundle of components that make up an application or piece of functionality. A managed package is a great way to release an app for sale and to support licensing your features. You can protect intellectual property because the source code of many components isn’t available through the package. You can also roll out upgrades to the package.
When you’re working with your production org, you create a .zip file of metadata components and deploy them through Metadata API. The .zip file contains:
  • A package manifest (package.xml) that lists what to retrieve or deploy
  • One or more XML components organized into folders

If you don’t have the packaged source already in the source format, you can retrieve it from the org and convert it using the CLI.