If you ever used DSL with IFs in your migrations, congratulations, you've failed your migration system.

Now, I don't want to be rude, but migrations are designed for smooth transition of your service from one state to another. Since they affect the system, it means they have to be the only source of truth when it comes to modifications that are performed on it. Because otherwise it won't be able to ensure that changes performed by it are keeping consistency while being reliable.

Once you start using CREATE TABLE IF (NOT) EXISTS or effectively any other sort of conditions that check tables structure, you're explicitly saying "Migration doesn't have exclusive rights for table modifications. There are some other ways there".
Which effectively means, your changes are no longer predictable. Why?

Here is a blunt and simple example to make the point:

CREATE TABLE IF NOT EXISTS Customer (
    name VARCHAR(255),
    surname VARCHAR(255),
);

You'd expect there'd be a table called Customer with name and surname, don't you?
Well, surprise, you have Customer table with first_name and last_name created by someone manually. I'll leave consequences for your own retrospective.