Site definitions mostly differ from each other by configuration, site collection features, site features and some other stuff. But when you create a Site based on a site definition you cannot replace it anymore by another site created by another site definition without losing all information or without doing difficult things to store the list data at another place.
We had the same problem when we had a team site / blank site used in stead of the publishing site definition. But the following steps will convert you already created team site / blank site to a publishing site without losing any list data.
Look at the Url. It is currently "http://demo.local/default.aspx". Because it points directly to a "default.aspx" file (not stored in any pages library) we know for certain that its not a site created based on the publishing site definition.

At the first we need to go to "Site Settings". There we click on "Site collection features". We need to enable the feature "Office SharePoint Server Publishing Infrastructure". This will enable publishing structure on site collection level and is needed before we are gonna enable the publishing feature at site level.

Next we go again to "Site Settings" and click on "Site features". There we enable the site feature "Office SharePoint Server Publishing". After enabling both features your created site will have publishing capabilities.

We need a new "default.aspx" file in the Pages library. Just go into "View all site content" on the left of the screen and select the "Pages" library. Press the arrow next to the "New" button to show all available Content Types for this library. The last one is called "Welcome Page" and will create a welcome page for you.

Fill in information like the title and description. Give the title the name "Default". This will also automatically rename the file to "Default.aspx". You could change this if you want. Select one of the Welcome page templates and press the "OK" button.

the last step is pointing the first page to be opened to this new "Default.aspx" page in the Pages library. So again go into "Site Settings" and click on "Site Welcome Page". You will see that it contains the current Url.

Press the "Browse" button for browsing through the content of your site into the "Pages" library.

Select the just created "Default.aspx" file from the "Pages" library.

Going back to your site you will see that the url is now changed to "http://demo.local/Pages/Default.aspx", just like when you create a site based on the publishing site definition.
