Purpose of sls package if sls deploy still requires serverless.yml

I’m trying to understand the purpose of sls package. My assumption was you can package your code up and then later do an sls deploy WITHOUT needing the code since you have the package. But when I do sls deploy and specify a package directory it still requires me to have the correct serverless.yml file. Shouldn’t the package contain everything necessary to deploy? In my cicd workflow I want to repeatably deploy a package without the need to make sure the serverless.yml is the correct revision.